を使用してタブが実装されているアプリケーションに取り組んでいますFragmentActivity
。アプリケーション全体でタブが必要なため、Androidのすべてのバージョンでアプリケーションと互換性を持たせるために、フラグメントが広く使用されています。
結果として、バックスタックにどのフラグメントが存在するかを視覚化する際に問題に直面しています。バックスタックに存在するフラグメントのリストを取得する方法があると確信しています。ありがとう。
を使用してタブが実装されているアプリケーションに取り組んでいますFragmentActivity
。アプリケーション全体でタブが必要なため、Androidのすべてのバージョンでアプリケーションと互換性を持たせるために、フラグメントが広く使用されています。
結果として、バックスタックにどのフラグメントが存在するかを視覚化する際に問題に直面しています。バックスタックに存在するフラグメントのリストを取得する方法があると確信しています。ありがとう。
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());
}
どのフラグメントが表示されているかを確認したい場合、およびフラグメントが配置されているビューの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");
}
}
これにより、バックスタック変更リスナーのアクションバーのタイトルが更新されます。