2012-08-18 33 views
28

我正在使用FragmentActivity實現製表符的應用程序。由於在整個應用程序中都需要製表符,所以碎片被廣泛用於使應用程序在所有版本的Android上兼容。如何獲得Android中的後臺碎片條目列表?

因此,我在可視化方面面臨着一個問題,那就是在什麼樣的碎片出現在背後。我確定有一個的方式來檢索背景上存在的片段列表。謝謝。

回答

73

FragmentManager有方法:

getBackStackEntryCount()

getBackStackEntryAt(INT指數)

FragmentManager fm = getFragmentManager(); 

for(int entry = 0; entry < fm.getBackStackEntryCount(); entry++){ 
    Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId()); 
} 
+3

getId返回backstack的ID不是片段 – 2017-08-08 13:41:05

+0

Downvote,因爲這是錯誤的。如果您執行'findFragmentById()'並使用這些ID,則不會找到片段。 – Bevor 2017-09-03 16:22:16

0

如果你想檢查哪些片段是可見的,如果你知道查看片段放置位置的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"); 
     } 
    } 

這將更新您的操作欄標題上的堆棧更改監聽器。