gpt4 book ai didi

android - "IllegalStateException Fragment not attached to Activity"重启应用时

转载 作者:行者123 更新时间:2023-11-29 01:44:54 25 4
gpt4 key购买 nike

我的 ViewPager 的一个 Fragment 有一个奇怪的问题。我有一个包含三个 FragmentViewPager。到目前为止一切都运行正常。当应用程序启动时,ViewPager(带有 FragmentPagerAdapter)附加了三个 fragment ,因此我可以毫无问题地从一个 fragment 导航到另一个 fragment 。当我尝试像这样手动重启应用程序(注销后)时出现问题:

Intent i = getBaseContext().getPackageManager().getLaunchIntentForPackage( getBaseContext().getPackageName() );
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);

现在,当我注销并重新启动应用程序时,应用程序崩溃并通过 IllegalStateException Fragment not attached to Activity 尝试从一个 fragment 访问资源时。

这是我附加 fragment 的代码,适配器:

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。我不明白为什么会这样,因为它应该像应用程序第一次启动时那样重新构建所有内容(因此适配器也带有 fragment )。也许我认为有些事情不正确?我以前搜索过一些类似的问题,并且有很多与此异常相关的问题,但没有解决我的情况,我认为这是一个特殊的问题。

最佳答案

我想我已经解决了。如我所料,我的问题是我“重新启动”应用程序的方式。它似乎没有再次重新创建 MainActivity,所以它没有重新构建并附加所有 fragments。现在我以另一种方式重新启动,这是我找到的解决方案here

为此目的使用 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);

关于android - "IllegalStateException Fragment not attached to Activity"重启应用时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com