2

ナビゲーション ドロワーを備えた Android アプリケーションを作成しました。このために、Android Studio テンプレートNavigation Drawer Activityを使用しました。アプリバーとナビゲーション ドロワーを組み合わせるには、ActionBarDrawerToggleクラスを使用します。

アクティビティ内で、さまざまなフラグメントを切り替えます。それらの 1 つには、より詳細なフラグメントを含む階層があります。this questionのような構成です。

したがって、最初のフラグメントを開くと、ドロワー トグルが表示されます。次に、リスト項目をクリックすると、最初のフラグメントがより詳細な 2 番目のフラグメントに置き換えられます。その後、元のドロワー トグルの代わりにアップ ボタンが表示されます。上ボタンをクリックすると、最初のフラグメントに戻り、上ボタンはドロワー トグルに戻ります。

2 番目のフラグメントを再度開くと、ドロワー トグルもアップ ボタンもありません。タブレットの戻るボタンを押すと、トグルが再び表示されますが、アップ ボタンはアプリを再起動するまで表示されません。

ドロワー トグルをアップ ボタンに変更するには、2 番目のフラグメントの onCreate 内で次のコマンドを使用します。

2 番目のフラグメントonCreate() :

//let the drawer toggle disappear
activity.toggle.setDrawerIndicatorEnabled(false); 
//let the up button appear
activity.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

上ボタンの機能は、次のコマンドで作成されます。

アクティビティonCreate() :

toggle.setToolbarNavigationClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
});

アクティビティonBackPressed() :

int count = getFragmentManager().getBackStackEntryCount();
if (count < 1) {
     super.onBackPressed();
     Intent intent = new Intent(Intent.ACTION_MAIN);
     intent.addCategory(Intent.CATEGORY_HOME);
     startActivity(intent);
} else {
     getFragmentManager().popBackStack();
     if (count == 1) {
          toggle.setDrawerIndicatorEnabled(true);
     }
}

最初のフラグメント内のこのコードで作成した 2 番目のフラグメントを開く:

最初のフラグメントownOpenMethod ():

activity.getFragmentManager().beginTransaction()
     .replace(R.id.content_frame, FirstFragment.newInstance())
     .addToBackStack(null).commit();

ユーザー Wolfram Rittmeyer は、この問題をここで報告しました:

ツールバーを使用しているときに、表示オプションを切り替えて、その間にホームを使用しないようにする必要がありました。そうしないと、(内部 android.support.v7.internal.widget パッケージの)ToolbarWidgetWrapper 内の setDisplayOptions() メソッドは、同じフラグメントを 2 回目に入力したときにアイコンを再作成しません。他の人がこの問題に出くわしたときのために、これをここに残しておきます。

しかし、私は彼が何を意味するのか理解できません。誰かが同じ問題や修正方法のサンプルコードを持っていましたか?

4

1 に答える 1

3

私はそれを考え出した!つまり、

@Override
public void onBackPressed() {
...
}

これを含める必要があります:

getSupportActionBar().setDisplayHomeAsUpEnabled(false);

2回目は、戻るアイコンが表示されます。

于 2016-01-29T20:52:20.077 に答える