この質問には多くの回答がありますが、技術的には私の質問は異なります。私はいくつかのドキュメントを読んで、1つのアクティビティで複数のフラグメントを使用すべきではないことに同意しました。フラグメントは、プロジェクトの要件やUIの仕様に依存 ので、自分のアプリケーションのアーキテクチャは 1. BaseActivity、すべての活動であること 2. BaseFragment、すべてのフラグメントから延び、その 私のコードから延び:フラグメントを使用する最良の方法
私が作ったBaseActivityで以下の機能
public void replaceFragment(int containerViewId, Fragment fragment, String fragmentTag, boolean addToBackStack) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(containerViewId, fragment, fragmentTag);
if(addToBackStack)
fragmentTransaction.addToBackStack(fragmentTag);
if(fragmentTag.matches("") && addToBackStack)
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
> FragmentB(置き換え) -
が
public void popBackStackImmediate() {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStackImmediate();
}
は合計フラグメント
public List<Fragment> fragmentList(){
return getSupportFragmentManager().getFragments();
}
ゲットでframeLayoutに
public void addFragment(int containerViewId, Fragment fragment, String fragmentTag, boolean addToBackStack, boolean isPending) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(containerViewId, fragment, fragmentTag);
if(addToBackStack)
fragmentTransaction.addToBackStack(fragmentTag);
if(fragmentTag.matches("") && addToBackStack)
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
if(isPending)
fragmentManager.executePendingTransactions();
}
戻るを押して機能をフラグメントを追加するには、フローが FragmentAです(追加) - >
QUET SION 1:なぜtotalFragmentsが2を表示していますか?私はFragmentBをAに置き換えました
質問2:私は2つのフラグメントを表示しているのに、私はスタックからどのように削除することができますか?
質問3:FragmentBが表示されているが、FragmentAフラグメントのライフサイクルすぎて作業がonResumeを..meansとのonCreate funcationsがあまりにも奇妙呼んでいるが、