52

を使用してタブが実装されているアプリケーションに取り組んでいますFragmentActivity。アプリケーション全体でタブが必要なため、Androidのすべてのバージョンでアプリケーションと互換性を持たせるために、フラグメントが広く使用されています。

結果として、バックスタックにどのフラグメントが存在するかを視覚化する際に問題に直面しています。バックスタックに存在するフラグメントのリストを取得する方法があると確信しています。ありがとう。

4

2 に答える 2

110

FragmentManagerには次のメソッドがあります。

getBackStackEntryCount()

getBackStackEntryAt(int index)

FragmentManager fm = getFragmentManager();

for(int entry = 0; entry<fm.getBackStackEntryCount(); entry++){
   Log.i(TAG, "Found fragment: " + fm.getBackStackEntryAt(entry).getId());
}
于 2012-08-18T04:24:13.453 に答える
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");
        }
    }

これにより、バックスタック変更リスナーのアクションバーのタイトルが更新されます。

于 2017-03-13T10:42:31.970 に答える