找到片段backstack
上是否存在特定片段的最佳方法是什麼? 目前,我循環並使用片段類名稱來查看是否存在一個。 想知道我能否以有效的方式查詢FragmentManger
。在後臺找到一個片段
謝謝你的時間。
問候,
找到片段backstack
上是否存在特定片段的最佳方法是什麼? 目前,我循環並使用片段類名稱來查看是否存在一個。 想知道我能否以有效的方式查詢FragmentManger
。在後臺找到一個片段
謝謝你的時間。
問候,
有你試試這個,
的FragmentManager有方法:
getBackStackEntryCount()
getBackStackEntryAt (int index)
FragmentManager fm = getFragmentManager();
for(int i = 0; i < fm.getBackStackEntryCount(); i++) {
Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(i).getId());
}
是你可以在這之前,你必須設置標籤名稱和找到tagname.but片段它應該是獨一無二的。
String backStateName = fragment.getClass().getName();
\t \t String fragmentTag = backStateName;
\t \t FragmentManager manager = this.getSupportFragmentManager();
\t \t boolean fragmentPopped = manager
\t \t \t \t .popBackStackImmediate(backStateName, 0);
這裏是完整的代碼它是添加到堆棧中,發現它的片段的方法。
// For the Fragment Replace And AddtobackStack
\t void replaceFragment(Fragment fragment) {
\t \t String backStateName = fragment.getClass().getName();
\t \t String fragmentTag = backStateName;
\t \t FragmentManager manager = this.getSupportFragmentManager();
\t \t boolean fragmentPopped = manager
\t \t \t \t .popBackStackImmediate(backStateName, 0);
\t \t if (!fragmentPopped && manager.findFragmentByTag(fragmentTag) == null) {
\t \t \t // fragment not in back stack, create it.
\t \t \t FragmentTransaction ft = manager.beginTransaction();
\t \t \t ft.replace(R.id.container, fragment, fragmentTag);
\t \t \t ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
\t \t \t ft.addToBackStack(backStateName);
\t \t \t ft.commit();
\t \t }
這似乎是一個更好的主意。我會在測試後接受答案。非常感謝。欣賞它。 – 2014-11-05 05:41:08
上述代碼是否適合您。 – 2014-11-05 10:02:38
這正是我現在做的事情。這就是我的意思循環。感謝您的回答。你有沒有更好的方法來做到這一點,而不需要for()'循環? – 2014-11-05 05:21:48