Sto scambiando la barra delle azioni per la barra degli strumenti e ho quasi tutti i pezzi del puzzle. Il mio problema è in particolare se si naviga su "su" e si ripristina il cassetto di navigazione, il pulsante di attivazione del cassetto non funziona più. Ho capito se ho impostato la modalità cassetto per sbloccato ho la possibilità di scorrere per aprire il cassetto, ma non posso fare clic per aprire il cassetto.Set di barre degli strumentiNavigationOnClickListener si interrompe ActionbarDrawerToggle funzionalità
Quindi carico il frammento A, il comportamento del cassetto va bene, vai al frammento B e apri l'icona su, premi su per tornare ad A, e il cassetto non si apre più con un clic.
Entrare frammento 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);
}
}
Il cassetto di navigazione è impostato proprio come il campione, forse il vecchio modo di impostare le opzioni è il problema? Per esempio, ho ancora questo nella mia attività:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
EDIT:
Va bene così Ho ridotto la questione al setNavigationOnClickListener(). Se non lo imposto (e salgo sul pulsante Indietro), il cassetto si comporta correttamente. Quindi ora la domanda è: come faccio a consentire all'utente di andare "su", e ripristinare il listener dei clic dopo che saliamo?
Volevo solo aggiungere una breve nota a questo, ho notato che onOptionsItemSelected non è sparato in frammenti, ma sembra bene per le attività - dove il controllo standard Android.R.id.home può essere effettuato –
Grazie. Ho appena modificato la tua soluzione in una [più semplice] (http://stackoverflow.com/a/30951016/1276636). – Sufian
molto molto molto molto, grazie :) –