Fragment Master-Details with saved State

时间:2015-10-16 09:33:47

标签: android fragment resume fragment-lifecycle

在一个活动中,有一个包含对象列表的片段。此片段应替换为包含列表项详细信息的另一个片段。当细节片段处于活动状态并按下后退按钮时,应恢复listfragment。

我的代码:

@Override
    public void onBackPressed() {
            if (detailsFragment.isVisible())
            {
                goToListFragment();
            }
        }
    }

    public void goToListFragment() {
        String backStateName = listFragment.getClass().getName();

        FragmentManager fm = getSupportFragmentManager();
        boolean fragmentPopped = fm.popBackStackImmediate(backStateName, 0);

        if (!fragmentPopped){ //fragment not in back stack, create it.
            FragmentTransaction ft = fm.beginTransaction();
            ft.replace(R.id.main_fragment_container, listFragment);
            ft.addToBackStack(backStateName);
            ft.commit();
        }


    }

    public void goToDetailsFragment(String foodAsJSON) {    
        String backStateName = detailsFragment.getClass().getName();
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.main_fragment_container, detailsFragment)
                .addToBackStack(backStateName)
                .commit();
    }

我观察到的:

listfragment: onPause() 
<back pressed in details view>
listfragment: oncreateView()
listfragment: onResume()

因此,当按下后退按钮时,我希望只调用 onResume 函数。实际上它是如何在片段生命周期中描述的。但正如我所观察到的那样, oncreateView()也被调用了。这导致片段完全重新加载,而不是想要的行为。那么,我该如何正确恢复主片段?

0 个答案:

没有答案