簡體   English   中英

嵌套片段和后台堆棧

[英]Nested fragment and back stack

我有一個片段,其中有一個嵌套片段,我以這種方式添加:

            if (home == null) {
                home = new MyFragment();
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                transaction.addToBackStack(MyFragment.class.getName());
                transaction.add(R.id.child_fragment, home).commit();
            }

當我輸入另一個片段並從上面返回子片段時不存在。 我檢查過,實例與null不同。

更新 :我改變了Ashwin S Ashok建議的代碼,但它仍然無法正常工作。

嘗試使用這些方法:

//如果您不想保留片段,請使用此選項。

protected void replaceFragmentStack(int container, Fragment fragment) {
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.replace(container, fragment);
    fragmentTransaction.commit();
}

//如果要在堆棧中添加片段,請使用此選項。

protected void addFragmentStack(int container, Fragment fragment, String tag) {
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    fragmentTransaction.add(container, fragment, tag);
    fragmentTransaction.addToBackStack(tag);
    fragmentTransaction.commit();
}

我建議你在片段內部進行事務時使用getChildFragmentManager() 這是我猜的一個錯誤。 你可以查看這個帖子,它將幫助你很多Android 4.2:使用嵌套片段的堆棧行為

您還需要瀏覽The Curious Techizen的博客

這是相同機制的github 項目示例的鏈接

我希望這能幫到您。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM