2015-05-26 11 views
11

Desidero aggiungere l'icona dell'applicazione nella barra di azione per tutte le attività nella mia applicazione e sull'icona clic, vorrei passare alla pagina iniziale della mia applicazione.SetHomeButtonEnabled non funziona ma setDisplayHomeAsUpEnabled sta funzionando

ho provato con il seguente codice nel onCreate

ActionBar actionBar = getSupportActionBar(); 
actionBar.setLogo(R.drawable.ic_launcher); 
actionBar.setDisplayUseLogoEnabled(true); 
actionBar.setDisplayShowHomeEnabled(true); 
actionBar.setHomeButtonEnabled(true); 

Ora l'icona dell'applicazione è in arrivo nel ActionBar, ma il clic su di esso, onOptionsItemSelected non è sempre chiamato. Ma se usi actionBar.setDisplayHomeAsUpEnabled (true) invece di actionBar.setHomeButtonEnabled (true), onOptionsItemSelected viene richiamato con item.getItemId(). Qui di seguito è il frammento di codice

ActionBar actionBar = getSupportActionBar(); 
actionBar.setLogo(R.drawable.ic_launcher); 
actionBar.setDisplayUseLogoEnabled(true); 
actionBar.setDisplayShowHomeEnabled(true); 
actionBar.setDisplayHomeAsUpEnabled(true); 

La documentazione dice utilizzando sia setDisplayHomeAsUpEnabled e setHomeButtonEnabled, onOptionsItemSelected sarà chiamato e l'unica differenza è la freccia. Non ho bisogno della freccia su nella barra delle azioni, ho solo bisogno dell'icona dell'applicazione. Come può essere fatto?

mio minSdkVersion 14 e 21. targetSdkVersion

risposta

14

Da http://developer.android.com/reference/android/app/ActionBar.html#setHomeAsUpIndicator(int)

È possibile utilizzare:

actionBar.setHomeAsUpIndicator(R.drawable.ic_launcher); 
actionBar.setDisplayShowHomeAsUpEnabled(true); 

e questo dovrebbe sostituire la freccia indietro con la vostra icona

+0

Grazie mille ... era quello che volevo –

+0

qualsiasi idea per cui '' 'setHomeButtonEnabled''' non funziona? –

+0

@JiechaoWang qual è il tuo caso d'uso? –

2

è possibile utilizzare questo :

Toolbar toolbar = (Toolbar) findViewById(R.id.myToolbar); 
toolbar.setNavigationIcon(R.drawable.ic_back); 
setSupportActionBar(toolbar); 
toolbar.setNavigationOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View view){ 
    finish(); 
    } 
}); 
Problemi correlati