私は個人的にこれらのソリューションの多くを試しましたが、最終的にはこの実用的なソリューションになりました。
バックスタック内のフラグメントの数を取得するために、以下で数回使用されるこのユーティリティ メソッドを追加します。
protected int getFragmentCount() {
return getSupportFragmentManager().getBackStackEntryCount();
}
次に、FragmentTransaction メソッドを使用してフラグメントを追加/置換するときに、フラグメントに一意のタグを生成します (例: スタック内のフラグメントの数を使用して)。
getSupportFragmentManager().beginTransaction().add(yourContainerId, yourFragment, Integer.toString(getFragmentCount()));
最後に、次のメソッドを使用して、バックスタック内のフラグメントを見つけることができます。
private Fragment getFragmentAt(int index) {
return getFragmentCount() > 0 ? getSupportFragmentManager().findFragmentByTag(Integer.toString(index)) : null;
}
したがって、バックスタックのトップ フラグメントをフェッチするには、次を呼び出すことで簡単に実現できます。
protected Fragment getCurrentFragment() {
return getFragmentAt(getFragmentCount() - 1);
}
お役に立てれば!