ActionBarCompat: ActionBar Ausblenden, bevor die Aktivität erstellt (bug?)
Also ich war mit dem ActionBarSherlock und beschlossen, wechseln Sie zu der neuen ActionBarCompat. Mit ABS, verstecken Sie die ActionBar wurde über die Art und Weise in diesem post beschrieben:
Gewusst wie: ausblenden der action-bar, bevor Sie die Aktivität angelegt wird, und dann zeigen Sie es wieder?
Aber, mit der ActionBarCompat stürzt die app auf API14, denn wenn Sie android:windowActionBar
als false
die getSupportActionBar()
Methode gibt null zurück, auch wenn Sie erklärt haben, die getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
in die onCreate()
Methode.
Lustige an der Sache ist, dass, wenn Sie nennen getActionBar()
statt, Sie erhalten das Objekt und alles funktioniert einwandfrei.
So, ist das ein bug oder bin ich etwas fehlt? Alle Ideen sind willkommen!
styles.xml
Datei:
<style name="Theme.MyApp" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowActionBar">false</item>
<item name="android:windowTitleSize">0dp</item>
</style>
MyActivity.java
Datei:
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Get the action bar feature. This feature is disabled by default into the theme
//for specific reasons.
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
...
//By default the action bar is hidden.
getSupportActionBar().hide();
}
InformationsquelleAutor der Frage | 2013-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich blieb stecken mit dem gleichen problem, und es scheint mir, fand einen Grund für dieses seltsame Verhalten. Ich schaute durch Quelle support-Bibliothek und bekam dies:
Appcompat prüft einen Wert von
mHasActionBar
variable vor dem erstellen der neuen action bar in ActionBarActivityDelegateUnd wir können ändern Sie dessen Wert durch den Aufruf
supportRequestWindowFeature(int featureId)
die Delegierten vonActionBarActivity
zu einem ActionBarActivityDelegate.Gibt es Basis-delegate-Klasse
ActionBarDelegateBase
und seine NachkommenActionBarDelegateHC
ActionBarActivityDelegateICS
ActionBarActivityJB
von denen eine gewählt ist entsprechend eine version von android. Und MethodesupportRequestWindowFeature
eigentlich funktioniert fast in allen von Ihnen, aber es ist überschriebenActionBarActivityDelegateICS
wieAlso es hat keine Auswirkungen auf die variable
mHasActionBar
das ist, warumgetSupportActionBar()
null zurück.Wir fast da. Ich kam zu zwei anderen Lösungen.
Erste Weg
import-source-Projekt appcompat von git
ändern überschriebene Methode in
ActionBarActivityDelegateICS.java
etwas wie diesOrt, diese Zeile in der Tätigkeit
onCreate
Methode vorgetSupportActionBar()
Zweite Möglichkeit
import-Projekt der appcompat aus dem android SDK (was ist mit leeren src-Verzeichnis)
fügen Sie diese Methode, um Ihre Aktivität
call
requestFeature()
imonCreate
Methode Ihrer Tätigkeit, wie dieseIch die zweite Möglichkeit genutzt. Das ist alles.
InformationsquelleAutor der Antwort st_
Ich diese ausblenden ActionBar in AppCompat:
style.xml
AndroidManifest.xml:
InformationsquelleAutor der Antwort Mike
Ich weiß nicht, ob ich genau verstanden Ihre Frage, aber hier gehe ich.
Ich denke, dass müssen Sie verwenden beide:
getSupportActionBar()
zu alten Versionen undgetActionBar()
zu den neuesten Versionen. Es ist kein bug.Müssen Sie überprüfen die Geräte-version, bevor Sie die Methoden.
Ich hoffe, ich konnte helfen.
InformationsquelleAutor der Antwort Luis Ribeiro
Hat Ihre Tätigkeit erstreckt sich ActionBarActivity? Wahrscheinlich ist es nicht, und das ist, warum läuft es mit dem getActionbar () - Methode.
InformationsquelleAutor der Antwort Levente Kürti