Nella mia app ho impostato la casa come indicatore di un disegno non predefinito in alcune circostanze. A volte la home come indicatore up dovrebbe essere ripristinata all'icona predefinita dopo che è stata cambiata.Come mostrare la casa predefinita come indicatore in alto usando la barra delle azioni di supporto?
Ho provato con
getSupportActionBar().setHomeAsUpIndicator(0);
Che secondo documentation dice utilizzerà il predefinito tema. Quando faccio questo, l'applicazione si blocca con il seguente errore:
05-15 11:12:03.160: E/AndroidRuntime(13021): FATAL EXCEPTION: main
05-15 11:12:03.160: E/AndroidRuntime(13021): Process: xxxxx.yyyyyy.zzzzzz, PID: 13021
05-15 11:12:03.160: E/AndroidRuntime(13021): android.content.res.Resources$NotFoundException: Resource ID #0x0
05-15 11:12:03.160: E/AndroidRuntime(13021): at android.content.res.Resources.getValue(Resources.java:1233)
05-15 11:12:03.160: E/AndroidRuntime(13021): at android.content.res.Resources.getDrawable(Resources.java:756)
05-15 11:12:03.160: E/AndroidRuntime(13021): at android.content.Context.getDrawable(Context.java:402)
05-15 11:12:03.160: E/AndroidRuntime(13021): at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:26)
05-15 11:12:03.160: E/AndroidRuntime(13021): at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:319)
05-15 11:12:03.160: E/AndroidRuntime(13021): at android.support.v7.internal.widget.TintManager.getDrawable(TintManager.java:133)
05-15 11:12:03.160: E/AndroidRuntime(13021): at android.support.v7.widget.Toolbar.setNavigationIcon(Toolbar.java:754)
05-15 11:12:03.160: E/AndroidRuntime(13021): at android.support.v7.internal.app.ToolbarActionBar.setHomeAsUpIndicator(ToolbarActionBar.java:176)
05-15 11:12:03.160: E/AndroidRuntime(13021): at xxxxx.yyyyyy.zzzzzz.updateHomeIndicator(aaaaa.java:1711)
Conosco il valore tema di default è impostato correttamente, perché se non l'ho mai messo in casa come indicatore di una consuetudine, la freccia indietro appare bene. Sto chiamando setDisplayHomeAsUpEnabled(true)
prima di provare la chiamata setHomeAsUpIndicator(0)
.
So che posso sempre copiare la casa predefinita come risorsa indicatore in alto nel mio progetto e utilizzare quella risorsa direttamente, ma vorrei evitare questa soluzione alternativa se possibile.
Grazie!
Zach
Edit:
Ho anche provato
getSupportActionBar().setHomeAsUpIndicator(null);
che si traduce in nessuna icona viene visualizzata sorta.
Perché stai passando 0 anziché un valore booleano? –
L'API setHomeAsUpIndicator() richiede un valore ID drawable o int resource. Non ci sono API booleane paramater che realizzano questo (per quanto ne so). – Zach
@CarlosJ leggi più vicino, dovrebbe funzionare. La documentazione afferma: 'Se si passa 0 a questo metodo, verrà utilizzato il drawable predefinito dal tema. Questo è perfettamente valido secondo la documentazione, tuttavia, sembra che se si imposta un'icona personalizzata, non è possibile chiamare con zero in seguito per reimpostarlo all'icona predefinita. Questo deve essere un caso angolo con l'API. –