2
所以我在玩ViewPager和Fragments,但是我遇到了一個問題:我可以從第一頁滑動到第三個ViewPage/Fragment,但是一旦我想要回到第二或第一,它只是崩潰。ViewPager with Fragments - >第二次選中崩潰
異常:java.lang.IllegalStateException:指定的子項已經有父項。您必須先調用子對象的父對象的removeView()。
我MainActivity(僅一個ViewPager在XML):
public void onCreate(Bundle savedInstanceState) {
if(created)
return;
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSectionsPagerAdapter = new SectionsPagerAdapter(
getSupportFragmentManager());
final ActionBar actionBar = getActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
mViewPager
.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
actionBar.addTab(actionBar.newTab()
.setText(mSectionsPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
Fragment fragment = null;
switch (i) {
case 0:
fragment = new TrackingFragment();
break;
case 1:
fragment = new TripFragment();
break;
case 2:
fragment = new MapFragment();
break;
}
Bundle args = new Bundle();
args.putInt(TrackingFragment.ARG_SECTION_NUMBER, i + 1);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount() {
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getString(R.string.title_section1).toUpperCase();
case 1:
return getString(R.string.title_section2).toUpperCase();
case 2:
return getString(R.string.title_section3).toUpperCase();
}
return null;
}
}
public void onTabReselected(Tab tab, FragmentTransaction arg1) {
}
public void onTabSelected(Tab tab, FragmentTransaction arg1) {
try {
mViewPager.setCurrentItem(tab.getPosition());
} catch (IllegalStateException e) {
}
}
我有3個片段與含有的LinearLayout,一個作爲ListFragment和一個返回MapView的(使用Android支持庫)之一。
任何想法?