Wie man "Call benötigt API Level 11" mit Android Activity repariert?

8

Ich fange gerade an, Android-Entwicklung zu machen, mehr oder weniger nach dem Ссылка Tutorial, und eine Sache nervt mich immer wieder: Ich habe zwei Klassen, die beide mithilfe des Erstellungsassistenten "Android Activity" erstellt wurden:

%Vor%

und

%Vor%

Eclipse hat mir immer wieder folgende Fehler gemeldet:

  

Aufruf erfordert API-Level 11 (aktuell mindestens 8):   android.app.Activity # getActionBar

     

Call erfordert API Level 11 (aktuell   min ist 8): android.app.ActionBar # setDisplayHomeAsUpEnabled

bis ich eins der Zeilen auskommentiert habe (wie oben gezeigt). Jetzt scheint die Anwendung zu kompilieren und auf meinem Android-Gerät zu laufen ohne Fehler. (Nun, zumindest ohne das Fehler).

Also:

  • Warum gibt getActionBar().setDisplayHomeAsUpEnabled(true); diesen Fehler in einer Klasse an, aber diese exakt gleiche Zeile ist kein Fehler - nicht einmal eine Warnung - in der anderen Klasse?
  • Gibt es einen Fehler im Erstellungsassistenten für "Android Activity", und irgendwie ist die getActionBar().setDisplayHomeAsUpEnabled(true); -Anweisung in einer Aktivität falsch, aber in der anderen völlig in Ordnung?
  • Gibt es vielleicht einen Bug in Eclipse Lint, und diese Aussage ist eigentlich in beiden Aktivitäten in Ordnung (oder vielleicht in beiden Aktivitäten falsch)?
  • Was muss ich tun, damit ich das beheben kann, ohne minSdkVersion="8" zu minSdkVersion="11" zu ändern? Ich hatte den Eindruck, dass es sich bei der Datei "android-support-v4.jar" um eine Kompatibilitätsbibliothek handelte, die auf Geräten der Version 8 ausgeführt wurde, um Daten zu verarbeiten, die nativ in Geräten der Version 11 behandelt wurden.
  • Was ist wirklich das Richtige, wenn ich diesen Fehler sehe?
David Cary 30.11.2012, 22:21
quelle

7 Antworten

16

Verwenden Sie getSupportActionBar() anstelle von getActionBar() . Dadurch werden Funktionen ActionBar auf API-Levels unter 11 bereitgestellt.

    
Balázs Palkó 29.04.2014 08:44
quelle
14

Kurz gesagt, die Aktionsleiste ist in älteren Android-Versionen nicht verfügbar, und auch die Google-Supportbibliothek bietet diese Funktion nicht. Dies ist der Grund, warum sich lint beschweren - Sie verwenden Code, der nicht in API verison 8 existiert, der als eine minimale API-Ebene festgelegt ist, die Ihre App unterstützt. Wenn Sie die Aktionsleiste für ältere Android-Versionen verwenden möchten, verwenden Sie die Open-Source-Bibliothek "Action Bar Sherlock".

Nun, um Ihre Fragen zu beantworten

  1. Dies sollte in beiden Klassen ein Fehler sein. Der Grund, warum es in einer der Klassen kein Fehler ist, ist nicht wirklich wichtig.
  2. Nein
  3. Es ist falsch in beiden Aktivitäten
  4. Sie müssen die Open-Source-Bibliothek verwenden, die eine Aktionsleiste für ältere Android-Versionen bietet, d. h. ActionBar Sherlock funktioniert hervorragend für diesen Zweck
  5. Das wirklich Richtige ist, die Android-Entwickler-Website zu öffnen und über die Einschränkungen der Support-Bibliothek zu lesen.
Simon-Droid 30.11.2012 23:01
quelle
4

Wenn Sie appcompat-v7 und höher verwenden, können Sie actionbarsherlock nicht verwenden, da beide dieselben Attribute definiert haben. Diese Bibliotheken haben also einen Ressourcenkonflikt.

Um es mit Support-Bibliothek zu tun, benötigen Sie: (Ich hoffe, Sie haben bereits die Support-Bibliothek heruntergeladen und in Ihr Projekt integriert)

  1. Sie müssen ActionBar aus der Support-Bibliothek verwenden, daher müssen Sie Ihre Aktivität erweitern mit der richtigen ActionBarActivity-Implementierung.

Importe:

%Vor%

Aktivität:

%Vor%

Damit können Sie die ActionBar-Implementierung von Activity, die von älteren Versionen unterstützt wird, erhalten:

%Vor%

schreibe Code & amp; habe Spaß!

    
drdrej 14.06.2014 14:55
quelle
3

Normalerweise behebe ich es mit der Annotation "@TargetApi (12)"

%Vor%     
David 02.12.2014 21:32
quelle
1
%Vor%

Bearbeiten Sie einfach die zweite Datei und speichern Sie sie. Es wird einen Fehler geben!

%Vor%

Kann sein

%Vor%

im gegebenen Kontext falsch

%Vor%

Sie müssen minSDK ändern. Ich denke, keine andere Option. Wenn Sie Functions API 11 verwenden möchten

    
Mohsin Naeem 30.11.2012 22:28
quelle
0

mache einfach eine Änderung in androidmanifest

als

%Vor%     
Om R Kattimani 27.09.2014 16:27
quelle
-2

Problem ist, wenn Sie eine Android-App in eclipse erstellen, haben Sie gefragt, min und max api Unterstützung auswählen und standardmäßig eclips wählen Sie 8 als min und 19 als max, wenn Sie oben genannten Fehler bedeutet, dass die Funktion, die Sie verwenden, ist Version, die ist größer als 8
Um dieses Problem zu beheben, gehe ich einfach in die Datei AndroidManifest.xml und ändere folgendes:

%Vor%

minsdkversion ist standardmäßig 8

    
Syed Fahad Ali 28.06.2014 13:38
quelle

Tags und Links