2014-04-14 7 views
6

voglio abilitare la funzione di navigazione nella ActionBar e hanno seguito il documento di questo a: http://developer.android.com/guide/topics/ui/actionbar.htmlAndroid ActionBar non mostra icona dell'applicazione dopo setDisplayHomeAsUpEnabled (vero)

Ma quando controllo la mia app (su Android 4.0), l'icona dell'app non viene visualizzata, ma viene visualizzato solo un segno di spunta a sinistra.

Ho verificato il file manifesto android, il file java e il layout, ma ancora non hanno idea di come farlo funzionare ....

Ecco l'AndroidManifest.xml:

... 
<activity 
     android:name="com.test.HelpActivity" 
     android:label="@string/help" 
     android:parentActivityName="com.test.HomeActivity" 
     android:theme="@style/Theme.AppCompat.Light.DarkActionBar" 
     android:screenOrientation="portrait" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.test.HomeActivity" /> 
</activity> 
... 

E qui è il codice Java:

... 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.ActionBarActivity; 

public class HelpActivity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_help); 

     ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
} 

}

Grazie per l'aiuto!

===== ===== UPDATE

ho fatto un altro test pochi, e qui è quello che ho ottenuto:

su un emulatore Android (2.3), funziona perfetto .

su un emulatore Android (4.1.2), funziona perfettamente.

su un emulatore Android (4.0), sembra che vada bene, ma quando clicco il tasto home/up, non succede nulla e visualizza logcat: bad parentActivityName 'HomeActivity' in palese

sul mio cellulare (4.0.3), viene visualizzato solo il caret sinistro, tuttavia la navigazione funziona correttamente.

su un emulatore Android (4.3), funziona correttamente, ma l'area di messa a fuoco diventa l'icona dell'app + il titolo dell'app. (Che è quando premo ovunque all'interno di questa lunga area, viene evidenziato e viene attivato l'evento di navigazione)

Ora sono completamente perso ... Suppongo che potrebbe esserci qualche bug in alcune versioni di Android.

+0

Ciao. Hai trovato una soluzione? Potrei essere nello stesso caso. Ho provato tutto ma l'icona non verrà mostrata. Sono fuori di idee ... – DEIONaLiMs

+0

@DEIONaLiMs, No non ho una soluzione e sembra un bug nella barra di azione appcompat. Alla fine ho rinunciato e forse potresti provare a usare Sherlock ActionBar se devi sbarazzarti di questo errore. – Qianqian

risposta

-2

Questo è strano, ben si può utilizzare questo

getActionBar().setDisplayUseLogoEnabled(useLogo) 

dove useLogo suo vero o falso, si può anche utilizzare un altro drawable come icona della barra azione con questa

getActionBar().setLogo(logo) 

cui logo suo un drawable

+0

Ho effettivamente provato il logo, anche se l'ho fatto aggiungendo l'attributo nel file AndroidManifest con l'attributo corrispondente. Ma proverò anche questo. – Qianqian

2

aggiungere questa riga sotto actionBar.setDisplayHomeAsUpEnabled (true);
funziona per me

actionBar.setDisplayShowHomeEnabled(true); 
actionBar.setIcon(R.drawable.ic_launcher); 
+0

Grazie. Ma credimi, l'ho provato e non ha funzionato. La cosa buona è che ora utilizzo Toolbar e non ho più bisogno dell'icona, con l'ultimo appcompat. – Qianqian

1

Penso che in Android 5 e API 21 non possiamo usare l'icona app per l'azione.
se la libreria di supporto dell'app è v7 rev21, penso che non sia possibile utilizzare l'icona dell'app almeno per un'azione. ma puoi usarlo al posto del caret in alto a sinistra o puoi usare l'icona app proprio di quel cursore, anche se se lo fai clic non succede nulla.

Ho due app completamente come quella formazione in uno di essi uso il vecchio appcompat v7 e minSdkVersion = "11" e non ho mai aggiunto getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ad esso, ma app hanno icona dell'applicazione e nessun problema. ma in un'altra app aggiorno la mia libreria di supporto qualche giorno fa a rev21 e, ovviamente, minSdkVersion di questa app è "8" ma questa app non ha l'icona actionBar per l'azione Up e se si aggiunge il codice superiore non si fa nulla. Cerco molti siti e ho solo capito che nella progettazione dei materiali google rimosso l'icona dell'app per l'azione a causa dell'aumento di spazio sulla barra delle azioni e così via. Puoi vedere questa riga
"Quando usi i temi Materiale (predefinito in API 21 o più recente) il pulsante di navigazione (in precedenza "Home") occupa lo spazio precedentemente occupato dall'icona dell'applicazione. Le app che desiderano esprimere un marchio più forte devono utilizzare i colori del proprio marchio pesantemente nella barra delle azioni e in altre chrome dell'applicazione o utilizzare al posto di testo del titolo standard. "
in questa pagina http://developer.android.com/reference/android/support/v7/app/ActionBar.html
Penso. grazie.

0

seguito enter link description here

ho aggiunto nel setup del NavigationDrawerFragment

 Toolbar toolbar = (Toolbar) ((Activity)mCallbacks).findViewById(R.id.action_bar); 
    if(toolbar!=null){ 
     toolbar.setLogo(R.drawable.ic_launcher); 
    } 

anche non sembra esserci bisogno di

actionBar.setDisplayHomeAsUpEnabled(true); 
    actionBar.setHomeButtonEnabled(true); 

Sto usando la libreria di supporto ultima 21.0.3

hth