一見するとこれが重複しているように見える他の質問があることは知っていますが、私の場合、これらの回答はどれも機能しません。
私が望むのは、戻るボタンがどのように機能するかに関してメインアクティビティのように表示される最初のフラグメントです。戻るボタンが押されたときに最初のフラグメントに戻るには、ナビゲーションドロワーから選択したフラグメントが必要です。もう一度押してアプリを終了します。
そのため、addToBackStack を使用してみましたが、別のフラグメントに移動すると、戻るボタンを押すと最初のフラグメントに戻ります (希望どおり) が、もう一度戻るボタンを押すと白い画面が表示されます (これが原因かどうか疑問に思います)以下に含まれるトランザクション アニメーションの im を使用するので、これを回避するために、[戻る] ボタンをオーバーライドして、finish(); への呼び出しをスローしようとしました。しかし、これにより、最初のフラグメントに戻るのではなく、どのフラグメントが終了しても、上記のリンクや他の多くの回避策をいくつか試しましたが、適切な修正が見つかりませんか?
これが私のメインアクティビティdisplayViewです
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new FirstFragment();
break;
case 1:
fragment = new glideFrag();
break;
case 2:
fragment = new secondGlideFrag();
break;
case 3:
fragment = new thirdGlideFrag();
break;
case 4:
fragment = new forthGlideFrag();
break;
case 5:
fragment = new lgFrag();
break;
case 6:
fragment = new cyanFrag();
break;
case 7:
fragment = new sonyFrag();
break;
case 8:
fragment = new SecondFragment();
break;
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.enter,R.anim.exit,R.anim.pop_enter,R.anim.pop_exit);
//fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.frame_container, fragment).addToBackStack("first Fragment").commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
私はそれを回避する素晴らしい方法のように見えるこれを見つけました
private boolean popNext = false;
if(popNext){
if(position == INITIAL_POSITION){
onBackPressed();
mDrawerLayout.closeDrawer(mDrawerList);
popNext = false;
return;
}
getSupportFragmentManager().popBackStackImmediate();
}
else{
if(position == INITIAL_POSITION){
mDrawerLayout.closeDrawer(mDrawerList);
return;
}
popNext=true;
}
しかし、私はまだAndroidにかなり慣れていないので、INITIAL_POSITIONを何に設定すればよいかわからないので、試しました
private static final INITIAL_POSITION = 0;
しかし、運がなければ