在使用带有ViewPager的选项卡时,获取错误“Java.lang.IllegalStateException活动已被销毁”我有一个应用程序,包括在选项卡模式中使用ActionBarSherlock,我有5个选项卡,每个选项卡的内容都是使用片段处理的。但是对于表2,我有一个片段,其中的XML文件包含一个ViewPager元素,而这个元素又有一些片段页。当我最初启动应用程序时,我能够在制表符之间切换没有问题,但是当我第二次按下表2时,我得到了上面提到的错误。主要活动如下:public class MainActivity extends SherlockFragmentActivity{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ActionBar actionBar = getSupportActionBar();
ActionBar.Tab tab1 = actionBar.newTab().setText("Tab1");
ActionBar.Tab tab3 = actionBar.newTab().setText("Tab3");
ActionBar.Tab tab2 = actionBar.newTab().setText("Tab2");
ActionBar.Tab tab4 = actionBar.newTab().setText("Tab4");
ActionBar.Tab tab5 = actionBar.newTab().setText("Tab5");
Fragment fragment1 = new Tab1();
Fragment fragment3 = new Tab3();
Fragment fragment2 = new Tab2();
Fragment fragment5 = new Tab5();
Fragment fragment4 = new Tab4();
tab1.setTabListener(new MyTabListener(fragment1));
tab3.setTabListener(new MyTabListener(fragment3));
tab2.setTabListener(new MyTabListener(fragment2));
tab5.setTabListener(new MyTabListener(fragment5));
tab4.setTabListener(new MyTabListener(fragment4));
actionBar.addTab(tab1);
actionBar.addTab(tab2);
actionBar.addTab(tab3);
actionBar.addTab(tab4);
actionBar.addTab(tab5);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
}从我在不同地方读到的内容来看(如果我错了,请纠正我),这是因为第二遍中的片段管理器试图重用活动中的片段,这已经不存在了,从而产生了错误,但我不知道为什么会在这里发生这种情况,因为我没有使用片段活动。根据logcat,错误出现在表2类中,onViewCreated方法的行上写着mViewPager.setAdapter(mMyFragmentPagerAdapter).任何帮助都是非常感谢的.谢谢。
3 回答
收到一只叮咚
TA贡献1821条经验 获得超4个赞
FragmentManager
onDetach()
Fragment
getChildFragmentManager()
@Overridepublic void onDetach() { super.onDetach(); try { Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager"); childFragmentManager.setAccessible(true); childFragmentManager.set(this, null); } catch (NoSuchFieldException e) { throw new RuntimeException(e); } catch (IllegalAccessException e) { throw new RuntimeException(e); }}
慕田峪4524236
TA贡献1875条经验 获得超5个赞
ft.replace(R.id.fragment_container, Fragment.instantiate(PlayerMainActivity.this, fragment.getClass().getName()));
- 3 回答
- 0 关注
- 442 浏览
添加回答
举报
0/150
提交
取消