2016-11-03 7 views
0

私はアンドロイドを初めて使っています。私はMianActivityからfragment_1と呼ばれています。その後、fragment_1からfragment_2と呼ばれています。それはうまくいきます。フラグメント2から戻るボタンを押しても機能しません(フラグメント1に戻る)フラグメント内でAndroidのバックボタンが機能しない

Fragment someFragment = new Fragment2(); 
    FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
    transaction.replace(R.id.relative_layout_to_replace, someFragment); 
    transaction.addToBackStack(null); 
    transaction.commit(); 

答えて

0

このコードは私

のための作品です
@Override 
public void onBackPressed(){ 
    if (getSupportFragmentManager().getBackStackEntryCount() == 1){ 
    finish(); 
    } 
    else { 
    super.onBackPressed(); 
    } 
} 
0

あなたのフラグメントはすでにbackstackに追加されています。しかし、あなたはBackstackに追加したフラグメントをAndroidデバイスに表示させるために、「Backstackをポップする」必要があります。 fragment1から

getSupportFragmentManager().beginTransaction() 
    .add(R.id.something,new Fragment1()).addToBackStack(null).commit(); 

: 単にあなたの活動のonBackPressed()主な活動から

FragmentManager manager = getSupportFragmentManager(); 
    if(manager.getBackStackEntryCount() > 0) { 
     manager.popBackStack();//Pops one of the added fragments 
    } 
0

にこれらのコード行を追加します

getActivity().getSupportFragmentManager().beginTransaction() 
    .replace(R.id.something,new Fragment2()).addToBackStack(null).commit(); 
0

注: - 常にトランザクションで最初のフラグメントを追加して、トランザクション内のすべての断片を置換、バック前のフラグメントに行くためにあなたが MainActivityにonBackPressed

FragmentTransaction fragTrans = fragmentManager.beginTransaction(); 
fragTrans.addToBackStack("DashboardFragment"); 
fragTrans.replace(contentFrameId, openDashBoard, "OpenDashboardFragment"); 

次のようにbackstackすることの断片を追加する必要があります

if (fragmentManager.getBackStackEntryCount() == 1) { 
     AlertExit(); 
} else { 
     int backStackId = fragmentManager.getBackStackEntryAt(i).getId(); 
     fragmentManager.popBackStack(backStackId, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
関連する問題