[英]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.