gpt4 book ai didi

android - FragmentManager 已被销毁

转载 作者:行者123 更新时间:2023-12-03 23:10:16 27 4
gpt4 key购买 nike

编辑:这似乎只发生在我之前的 Activity 是横向的,并且 setRequestedOrientation() 是纵向的,这可能是什么问题?

我在一个 Activity 中有一个代码,它启动一个对 REST API 的 Volley 请求以检索一些数据,并有一个回调,如果数据被成功检索,它将启动一个 fragment 。然而,这只适用于纵向模式,在横向模式下,它会抛出“fragment 管理器已被破坏”异常。

我似乎无法找到这个问题的根源,因此我无法尝试任何替代解决方案。

这是我的这个 Activity 的 onCreate() 方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(SettingsManager.getOrientationSettings(this));
setContentView(R.layout.activity_settings);

findViews();
setListeners();
getSettings();
}

goSettings() 将检索数据,设置请求的方向将是 ActivityInfo.SCREEN_ORIENTATION_PORTRAITActivityInfo.SCREEN_ORIENTATION_USER_LANDSCAPE .

我的 loadFirstPage() 方法:
  private void loadFirstPage() {
VMSSettingsPageOneFragment fragment = new VMSSettingsPageOneFragment();
FragmentManager fm = getSupportFragmentManager();

fm.beginTransaction()
.replace(R.id.settings_fragment_container, fragment)
.commit();
}

错误信息:
E/FileUtils: File Write Exception
java.lang.IllegalStateException: FragmentManager has been destroyed
at androidx.fragment.app.FragmentManager.enqueueAction(FragmentManager.java:1853)
at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:321)
at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:286)
at com.timeteccloud.icomm.platformVMS.settingsActivity.VMSSettingsActivity.loadFirstPage(VMSSettingsActivity.java:87)

最佳答案

您可以在提交 fragment 事务之前执行检查,如下所示。

 public boolean loadFragment(Fragment fragment) {
//switching fragment
if (fragment != null) {
FragmentTransaction transaction = fm.beginTransaction();
transaction.replace(R.id.main_frame_layout, fragment);

if (!fm.isDestroyed())
transaction.commit();
return true;
}
return false;
}

关于android - FragmentManager 已被销毁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58814735/

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