Probleme mit der Verwendung von appcompat v7

  • Antworten:10
  • Bentwortet
Sebastian P.
  • Forum-Beiträge: 72

03.11.2013, 12:49:09 via Website

Ich verwende ein Handy mit Android 2.3.6 (API10) und würde gerne die ActionBars (wie man sie von API11 (?) aufwärts kennt) verwenden.
Hierzu habe ich die Anleitung von Google (Support Library Setup > Adding libraries with resources > Using Eclipse) verwendet. Allerdings funktioniert die Anleitung bei mir nicht. (eclipse 3.8) Ich kann zwar das neue Projekt aus den Support Libraries erzeugen (/home/sebastian/android-sdks/extras/support/v7/appcompat als root-Ordner des neuen Projekts) und meine Activities als
1public class Main extends ActionBarActivity
definieren, aber beim testen erhalte ich folgenden Fehlerhaufen:

111-03 12:46:56.414: E/AndroidRuntime(24473): FATAL EXCEPTION: main
211-03 12:46:56.414: E/AndroidRuntime(24473): java.lang.ExceptionInInitializerError
311-03 12:46:56.414: E/AndroidRuntime(24473): at android.support.v7.app.ActionBarActivityDelegate.createDelegate(ActionBarActivityDelegate.java:51)
411-03 12:46:56.414: E/AndroidRuntime(24473): at android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.java:96)
511-03 12:46:56.414: E/AndroidRuntime(24473): at me.the_seppi.xplayer.Main.onCreate(Main.java:20)
611-03 12:46:56.414: E/AndroidRuntime(24473): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
711-03 12:46:56.414: E/AndroidRuntime(24473): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
811-03 12:46:56.414: E/AndroidRuntime(24473): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
911-03 12:46:56.414: E/AndroidRuntime(24473): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
1011-03 12:46:56.414: E/AndroidRuntime(24473): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
1111-03 12:46:56.414: E/AndroidRuntime(24473): at android.os.Handler.dispatchMessage(Handler.java:99)
1211-03 12:46:56.414: E/AndroidRuntime(24473): at android.os.Looper.loop(Looper.java:130)
1311-03 12:46:56.414: E/AndroidRuntime(24473): at android.app.ActivityThread.main(ActivityThread.java:3687)
1411-03 12:46:56.414: E/AndroidRuntime(24473): at java.lang.reflect.Method.invokeNative(Native Method)
1511-03 12:46:56.414: E/AndroidRuntime(24473): at java.lang.reflect.Method.invoke(Method.java:507)
1611-03 12:46:56.414: E/AndroidRuntime(24473): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
1711-03 12:46:56.414: E/AndroidRuntime(24473): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
1811-03 12:46:56.414: E/AndroidRuntime(24473): at dalvik.system.NativeStart.main(Native Method)
1911-03 12:46:56.414: E/AndroidRuntime(24473): Caused by: java.lang.NoClassDefFoundError: android.support.v7.appcompat.R$attr
2011-03 12:46:56.414: E/AndroidRuntime(24473): at android.support.v7.app.ActionBarActivityDelegateBase.<clinit>(ActionBarActivityDelegateBase.java:48)
2111-03 12:46:56.414: E/AndroidRuntime(24473): ... 16 more

Was mache ich falsch?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.11.2013, 12:55:56 via App

Ich würde keine actionbar activity nehmen sondern einfach die in der support lib enthaltene action bar klasse.
Ist genau gleiche programmierung wie die ActionBar der folgenden Apis nur du musst einen anderen import benutzen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Sebastian P.
  • Forum-Beiträge: 72

03.11.2013, 12:57:03 via Website

Und wie genau funktioniert die Programmierung der ActionBars mit API11+? Ich habe mich damit noch nicht so wirklich auseinandergesetzt...

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.11.2013, 13:00:58 via App

Da musst du dich schon selber ins zeug legen.
Google fragen kann nicht nur ich.
nach ein paar action bar tutorials wird dir das ganze klarer sein.
Bei einem Konkreten problem kannst du deine frage hier stellen

Viel erfolg

Pascal

— geändert am 03.11.2013, 13:01:15

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Sebastian P.
  • Forum-Beiträge: 72

03.11.2013, 13:13:11 via Website

Ich finde nur Zeug was "extends ActionBarActivity" verwendet. Und Eclipse markiert
1android:theme="@style/Theme.AppCompat.Dark"
als Fehler: error:
1Error: No resource found that matches the given name (at 'theme' with value '@style/
2 Theme.AppCompat.Dark').

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.11.2013, 13:31:35 via App

Ist eigentlich richtig, kp was eclipse da hat.
In einer normalen activity machst du es so:
1ActionBar bar = getActionBar();
2bar.show();
Sollte fürs erste genügen.

edit; vlt hat eclipse die lib nicht richtig angenommen.

— geändert am 03.11.2013, 13:32:44

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Sebastian P.
  • Forum-Beiträge: 72

03.11.2013, 13:38:35 via Website

Funktioniert nicht...
In einer normalen Activity muss ich für Bar android.support.v7.app.ActionBar verwenden, getActionBar() liefert eine android.app.ActionBar und benötigt zudem API11+. Daher muss ich wohl doch ActionBarActivity verwenden...
Btw... muss die minAPI der App auf 7 gesetzt sein, wenn ich v7 Support verwende? Der verwendete MediaMetadata Retirever benötigt nämlich API10.

Antworten
Sebastian P.
  • Forum-Beiträge: 72

03.11.2013, 14:18:57 via Website

So, Project clean, library neu einbinden, clean, eclipse neustarten und das Theme ist verwendbar. Ich hab jetzt jedoch keine ActionBar in den Activities, nur die titlebar is weg. wie komm ich jetzt zur action bar?

Antworten
Sebastian P.
  • Forum-Beiträge: 72

03.11.2013, 15:02:12 via Website

Danke, ich kann jetzt doch ActionBarActivity verwenden. War irgendein dependency mismatch, weil ich zwischendurch im SDK Manager die Supportlibraries aktualisiert habe und noch die alte version irgendwo drinhatte... alte Version rausgeschmissen und es funktioniert.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

03.11.2013, 15:07:42 via Website

Schön dass es Funktioniert hat. :)

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten