【问题标题】:App crashes when I navigate second time to nested Fragment当我第二次导航到嵌套片段时应用程序崩溃
【发布时间】:2013-07-14 23:14:50
【问题描述】:

我正在使用嵌套片段并且片段加载良好。但是当我在此 frameLayout 中加载另一个片段并想再次加载嵌套片段时,我的应用程序崩溃了。

07-14 16:58:21.272: E/AndroidRuntime(1813): java.lang.IllegalStateException: Activity has been destroyed
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1342)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at me.kaidul.uhunt.Fragment1.onCreateView(Fragment1.java:23)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
07-14 16:58:21.272: E/AndroidRuntime(1813):     at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)

我的父片段类:

public class Fragment1 extends SherlockFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment1, container, false);
        Fragment fragmentC = new HeadlinesFragment();
        Fragment frag = new Child();
        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
        transaction.add(R.id.child_fragment, fragmentC );
        transaction.add(R.id.child_fragment2, frag );
        transaction.commit();
        return rootView;
    }

}

编辑: 这就是我将所有片段添加到活动的方式:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        // Locate Position
        switch (position) {
        case 0:
            ft.replace(R.id.content_frame, fragment1);
            break;
        case 1:
            ft.replace(R.id.content_frame, fragment2);
            break;
        case 2:
            ft.replace(R.id.content_frame, fragment3);
            break;
        }
        ft.commit();

【问题讨论】:

  • 如何将 Fragment1 和 other 添加到 Activity 中?
  • @MaciejGórski 我编辑了我的问题并添加了 sn-p 以将片段添加到活动中。请看一下
  • 可能与此答案中引用的错误有关 - stackoverflow.com/a/15656428/574785
  • @ErikR 你好,是的,我已经在你提到的这个链接的帮助下解决了这个问题。请写下您的评论作为答案,以便我接受。 :D
  • @ErikR 不错的技巧。但我会走另一条路。始终创建所需片段的新实例。

标签: android android-fragments


【解决方案1】:

这与嵌套片段的已知错误有关。这是解决它的一种方法 - https://stackoverflow.com/a/15656428/574785

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多