请问大家有这样做过的吗?
查了下也试了下,要求是ViewPager所在的Activity必需是继承FragmentActivity(项目的sdk是2.2的,使用了支持包)
而且在activity中还是要写一个Adapter类来给ViewPager绑定.
但是问题就出来了
报错是
java.lang.IllegalStateException: Can't change container ID of fragment FragmentIndex{b4fbded8 #0 id=0x7f090005 android:switcher:2131296260:0}: was 2131296261 now 2131296260
怀疑是getItem或instantiateItem中出的问题.
布局文件
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/rdogNav"
android:background="#D3E2E2"
android:flipInterval="30"
android:persistentDrawingCache="animation" >
<fragment
android:id="@+id/fragIndex"
android:name="com.shr.demo.FragmentIndex"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<fragment
android:id="@+id/fragHistory"
android:name="com.shr.demo.FragmentHistory"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<fragment
android:id="@+id/fragAbout"
android:name="com.shr.demo.FragmentAbout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.view.ViewPager>
后台代码
public class MainFragmentPagerAdapter extends FragmentPagerAdapter
{
// private ArrayList<Fragment> fragments;
FragmentManager fmngr;
public MainFragmentPagerAdapter(FragmentManager fm)
{
super(fm);
fmngr = fm;
}
/*
* public MainFragmentPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragments)
* {
* super(fm);
* this.fragments = fragments;
* }
*/
@Override
public Fragment getItem(int pos)
{
int resId = 0;
switch (pos)
{
case 0:
resId = R.id.fragIndex;
break;
case 1:
resId = R.id.fragHistory;
break;
case 2:
resId = R.id.fragAbout;
break;
}
return fmngr.findFragmentById(resId);
}
/**/
@Override
public Object instantiateItem(View collection, int position)
{
return getItem(position);
}
@Override
public int getCount()
{
return 3;
}
@Override
public int getItemPosition(Object object)
{
return super.getItemPosition(object);
}
}