我正在使用FragmentActivity
實現製表符的應用程序。由於在整個應用程序中都需要製表符,所以碎片被廣泛用於使應用程序在所有版本的Android上兼容。如何獲得Android中的後臺碎片條目列表?
因此,我在可視化方面面臨着一個問題,那就是在什麼樣的碎片出現在背後。我確定有一個的方式來檢索背景上存在的片段列表。謝謝。
我正在使用FragmentActivity
實現製表符的應用程序。由於在整個應用程序中都需要製表符,所以碎片被廣泛用於使應用程序在所有版本的Android上兼容。如何獲得Android中的後臺碎片條目列表?
因此,我在可視化方面面臨着一個問題,那就是在什麼樣的碎片出現在背後。我確定有一個的方式來檢索背景上存在的片段列表。謝謝。
的FragmentManager有方法:
getBackStackEntryCount()
getBackStackEntryAt(INT指數)
FragmentManager fm = getFragmentManager();
for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){
Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
}
如果你想檢查哪些片段是可見的,如果你知道查看片段放置位置的ID,首先必須在onCreate()中添加以下內容()
getSupportFragmentManager().addOnBackStackChangedListener(new OnBackStackChangedListener() {
@Override
public void onBackStackChanged() {
Fragment f = getSupportFragmentManager().findFragmentById(R.id.content_frame);
if (f != null){
updateActionBarTitle(f);
}
}
});
private void updateActionBarTitle(Fragment fragment) {
String fragClassName = fragment.getClass().getName();
if (fragClassName.equals(FirstFragment.class.getName())) {
setTitle("Home");
} else if (fragClassName.equals(SecondFragment.class.getName())) {
setTitle("Second");
}
}
這將更新您的操作欄標題上的堆棧更改監聽器。
getId返回backstack的ID不是片段 – 2017-08-08 13:41:05
Downvote,因爲這是錯誤的。如果您執行'findFragmentById()'並使用這些ID,則不會找到片段。 – Bevor 2017-09-03 16:22:16