我有一个奇怪的问题,有一个Fragment
我的ViewPager
。我ViewPager
和三个人在一起Fragment
。到现在为止一切都还不错。应用启动时,ViewPager
(带有FragmentPagerAdapter
)附加了三个片段,因此我可以毫无问题地从一个浏览到另一个。当我尝试像这样手动(退出后)重新启动应用程序时,出现了问题:
Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
现在,当我注销并重新启动应用程序时,应用程序崩溃并IllegalStateException Fragment not attached to Activity
尝试从片段中的一个上访问资源。
这里就是我附上的代码fragments
中,adapter
:
public class AppSectionsPagerAdapter extends FragmentPagerAdapter {
public AppSectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public BaseListFragment getItem(int index) {
switch (index) {
case 0:
case R.id.index_explore:
BaseListFragment fragment0 = new Fragment0();
fragment0.setUserVisibleHint(true);
return fragment0;
case 1:
case R.id.index_main:
if (fragment instanceof FragmentList)
((FragmentList) fragment).removeMap();
return new Fragment1();
case 2:
case R.id.index_my_stuff:
BaseListFragment fragment2 = new Fragment2();
fragment2.setUserVisibleHint(true);
return fragment2;
default:
if (fragment instanceof FragmentList)
((FragmentList) fragment).removeMap();
return new Fragment1();
}
}
@Override
public int getCount() {
return 3;
}
}
然后,我设置adpater
:
mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mAppSectionsPagerAdapter);
是导致崩溃的Fragment0。我不明白为什么会发生这种情况,因为它应该像第一次启动应用程序一样重新构建所有内容(因此也带有片段的适配器)。也许我认为这是不正确的?我以前曾搜索过一些类似的问题,并且与该异常有很多关联,但是无法解决我的情况,我认为这是一个特殊的问题。
我认为我已经解决了。如我所料,我的问题是我“重新启动”应用程序的方式。似乎它没有再次重新创建MainActivity,因此它没有重新构建并附加所有内容fragments
。现在我restart
以另一种方式,在这里找到了一个解决方案
Alarmmanager
为此目的使用是正确的吗?这是我使用的代码:
PendingIntent intent = PendingIntent.getActivity(this.getBaseContext(), 0, new Intent(getIntent()), getIntent().getFlags());
AlarmManager manager = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC, System.currentTimeMillis(), intent);
System.exit(2);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句