Ich vertausche die Aktionsleiste für die Symbolleiste, und ich habe fast jedes Teil des Puzzles an Ort und Stelle. Mein Problem ist speziell, wenn ich nach oben navigiere und die Navigationsleiste wiederherstelle, funktioniert die Umschalttaste nicht mehr. Ich habe herausgefunden, dass ich die Schublade öffnen kann, wenn ich den Schubladenmodus auf "entriegelt" stelle, aber ich kann nicht klicken, um die Schublade zu öffnen.Toolbar setNavigationOnClickListener bricht ActionbarDrawerToggle Funktionalität
Also ich lade Fragment A, Schublade Verhalten ist in Ordnung, gehen Sie zu Fragment B und wenden Sie das Symbol hoch, drücken Sie hoch, um zurück zu A, und die Schublade wird nicht mit einem Klick mehr öffnen.
Anfang Fragment B:
Toolbar t = mHostingActivity.getToolbar();
mHostingActivity.getDrawerToggle().setDrawerIndicatorEnabled(false);
mHostingActivity.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
t.setNavigationIcon(mHostingActivity.getV7DrawerToggleDelegate().getThemeUpIndicator());
t.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popBackStackToTop(mHostingActivity);
}
});
/**
* Pop the back stack and hide the Up caret all the way to the top level of the {@link com.loylap.activities.MainActivity}
*
* @param activity our hosting activity
*/
public static void popBackStackToTop(MainActivity activity) {
if (activity != null) {
FragmentManager fm = activity.getSupportFragmentManager();
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
activity.getDrawerLayout().setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
activity.getDrawerToggle().setDrawerIndicatorEnabled(true);
}
}
Die Navigationsleiste ist ebenso wie die Probe aufgebaut, vielleicht die alte Art und Weise der Einstellung der Optionen nach oben ist das Problem? Zum Beispiel habe ich noch in meinem Aktivität:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
EDIT:
Okay, so habe ich das Problem mit dem setNavigationOnClickListener verengt(). Wenn ich das nicht einstelle (und über die Zurück-Taste nach oben gehe) - verhält sich die Schublade korrekt. Die Frage ist nun, wie kann ich dem Benutzer richtig erlauben, nach oben zu gehen, und den Klick-Listener wiederherstellen, nachdem wir nach oben gegangen sind?
Ich wollte nur eine kurze Notiz hinzufügen, ich habe festgestellt, onOptionsAltAusgewählt ist nicht in Fragmenten gefeuert, scheint aber gut für Aktivitäten - wo Der Standard android.R.id.home Check kann gemacht werden –
Danke. Ich habe gerade Ihre Lösung in eine [einfachere] geändert (http://stackoverflow.com/a/30951016/1276636). – Sufian
sehr sehr sehr sehr danke :) –