13

私はこのテンプレートhttps://github.com/kanytu/android-material-drawer-templateを試してみるmaterial designために使用しているので、いくつかのフラグメントを実装しました。

私の問題は、フラグメントを切り替えるときに、フラグメントがバックスタックに正常に追加されていることを確認できることです

getFragmentManager().beginTransaction().replace(R.id.container, new FAQ()).addToBackStack("FAQ").commit();

しかし、戻るボタンを押すと、アプリが閉じます。

Activityナビゲーションの代わりに使用するように変更するとActionBarActivity、正常に動作しますが、他の機能が失われます。

戻るボタンにオーバーライドがあります

@Override
public void onBackPressed() {
   if (mNavigationDrawerFragment.isDrawerOpen())
       mNavigationDrawerFragment.closeDrawer();
   else
       super.onBackPressed();
}

しかし、それが削除されたとしても、それはまだ起こります。問題はどこかにあると思いますsuper.onBackPressed

ActionBarActivity戻るボタンを壊す理由はありますか?

4

2 に答える 2

1

「getFragmentManager」と「getSupportFragmentManager」がアクティビティとアクションバーアクティビティに一致しているかどうかを確認する必要があります。

なぜなら、アクティビティでは:

public void onBackPressed() {
    if (!mFragments.popBackStackImmediate()) {
        finish();
    }
}

FragmentActivityで:

public void onBackPressed() {
    if (!mFragments.popBackStackImmediate()) {
        finish();
    }
}

ポップ フラグメント backstatck を既に処理した同じコードを見ることができます。私の状況では、 actionbaractivity(extends FragmentAcvitiy) を使用しましたが、 "getFragmentManager" も使用したため、あなたと同じエラーが発生しました。「getFragmentManager」を「getSupportFragmentManager」に置き換えたら、それで問題ありません。「actionbaractiviy」を「Activity」に置き換えて、この問題を解決することもできます。

「getFragmentManager」が「Activity」と一致し、「getSupportFragmentManager」が「FragmentActivity(ActionbarActivity)」と一致することを確認する必要があります。

API レベル 11 以降でアクションバーを追加する場合は、以下を参照してください。

https://developer.android.com/guide/topics/ui/actionbar.html#Adding

API レベル 11 以降 アクション バーは、targetSdkVersion または minSdkVersion 属性が「11」以上に設定されている場合のデフォルト テーマである Theme.Holo テーマ (またはその子孫の 1 つ) を使用するすべてのアクティビティに含まれます。アクティビティにアクション バーが必要ない場合は、アクティビティ テーマを Theme.Holo.NoActionBar に設定します。

于 2014-12-04T04:02:05.793 に答える