私はアンドロイドアプリケーションを使っています。私はバックスタックヒストリーにフラグメントを追加するような問題に直面しています。フラグメントAからフラグメントBに移動し、フラグメントBでボタンをクリックしてフラグメントAに戻りたいと思っています。私はこれが起こることを望んでいません。解決策を教えてください。私のコードの構造は以下の通りである:バックスタッキングにフラグメントを追加せずにアンドロイドで断片をナビゲートする
フラグメントA:
.......
FragmentB fragmentB = new FragmentB();
showFragmentOmitStack(fragmentB);
....
public void showFragmentOmitStack(Fragment fragment) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.container,fragment);//add // replace
transaction.addToBackStack(null);
transaction.commit();
}
断片B:
FragmentA fragmentA = new FragmentA();
showFragment(fragmentA, "FragmentA");
public void showFragment(Fragment fragment, String back_stack_name) {
FragmentManager fragmentManager = thisActivity.getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.container, fragment);
fragmentTransaction.addToBackStack(back_stack_name);
fragmentTransaction.commit();
}
My活動のJavaファイルで:
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
if (getFragmentManager().getBackStackEntryCount() == 0) {
showAlertDialog(Constants.EXIT_APP, Constants.APP_NAME);
} else {
getFragmentManager().popBackStackImmediate();
}
}
}
あなたは、フラグメントBのボタンをクリックすると、ちょうどbackstackポップ、新しいフラグメントAを追加しないでください。あなたのバックスティックを行う方法はA B Aになります。 – ElDuderino