Kaidul
Kaidul

Reputation: 15905

App crashes when I navigate second time to nested Fragment

I am using Nested Fragment and The Fragment loads well.But when I load another fragment in this frameLayout and want to load the Nested Fragment again, My app is crashing.

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)

My parent Fragment class:

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;
    }

}

Edit: This is how I add all the fragments to activity:

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();

Upvotes: 3

Views: 3958

Answers (1)

ErikR
ErikR

Reputation: 1042

This is related to a known bug with nested Fragments. Here is one way to work around it - https://stackoverflow.com/a/15656428/574785

Upvotes: 6

Related Questions