wake-up-neo.com

Fehler beim Implementieren der Support Library-Aktionsleiste

Ich versuche die neue v7 Support Library ActionBar zu implementieren. Ich kann es jedoch nicht zum Laufen bringen.

Hier ist die Ausnahme

07-25 09:30:01.704: E/AndroidRuntime(9175): FATAL EXCEPTION: main
07-25 09:30:01.704: E/AndroidRuntime(9175): Java.lang.NoClassDefFoundError: Android.support.v7.appcompat.R$styleable
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.support.v7.app.ActionBarActivityDelegate.onCreate(ActionBarActivityDelegate.Java:98)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.support.v7.app.ActionBarActivityDelegateICS.onCreate(ActionBarActivityDelegateICS.Java:58)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.support.v7.app.ActionBarActivity.onCreate(ActionBarActivity.Java:98)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at com.cidaut.termoweb.MainActivity.onCreate(MainActivity.Java:23)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.app.Activity.performCreate(Activity.Java:5133)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1087)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2175)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2261)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.app.ActivityThread.access$600(ActivityThread.Java:141)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1256)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.os.Handler.dispatchMessage(Handler.Java:99)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.os.Looper.loop(Looper.Java:137)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Android.app.ActivityThread.main(ActivityThread.Java:5103)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Java.lang.reflect.Method.invokeNative(Native Method)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at Java.lang.reflect.Method.invoke(Method.Java:525)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:737)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:553)
07-25 09:30:01.704: E/AndroidRuntime(9175):     at dalvik.system.NativeStart.main(Native Method)

Das Problem tritt beim super.onCreate(bundle)-Aufruf bei onCreate() auf.

Hier ist meine gesamte themenbezogene XML:

styled.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>
    <style name="Theme.Termoweb" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="actionBarItemBackground">@drawable/selectable_background_termoweb</item>
        <item name="popupMenuStyle">@style/PopupMenu.Termoweb</item>
        <item name="dropDownListViewStyle">@style/DropDownListView.Termoweb</item>
        <item name="actionBarTabStyle">@style/ActionBarTabStyle.Termoweb</item>
        <item name="actionDropDownStyle">@style/DropDownNav.Termoweb</item>
        <item name="actionBarStyle">@style/ActionBar.Solid.Termoweb</item>
        <item name="actionModeBackground">@drawable/cab_background_top_termoweb</item>
        <item name="actionModeSplitBackground">@drawable/cab_background_bottom_termoweb</item>
        <item name="actionModeCloseButtonStyle">@style/ActionButton.CloseMode.Termoweb</item>
        <!-- Light.DarkActionBar specific -->
        <item name="actionBarWidgetTheme">@style/Theme.Termoweb.Widget</item>
    </style>



    <style name="ActionBar.Solid.Termoweb" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="background">@drawable/ab_solid_termoweb</item>
        <item name="backgroundStacked">@drawable/ab_stacked_solid_termoweb</item>
        <item name="backgroundSplit">@drawable/ab_bottom_solid_termoweb</item>
        <item name="progressBarStyle">@style/ProgressBar.Termoweb</item>
    </style>


    <style name="ActionBar.Transparent.Termoweb" parent="@style/Widget.AppCompat.ActionBar">
        <item name="background">@drawable/ab_transparent_termoweb</item>
        <item name="progressBarStyle">@style/ProgressBar.Termoweb</item>
    </style>


    <style name="PopupMenu.Termoweb" parent="@style/Widget.AppCompat.ListView.Menu">
        <item name="popupBackground">@drawable/menu_dropdown_panel_termoweb</item>
    </style>


    <style name="DropDownListView.Termoweb" parent="@style/Widget.AppCompat.ListView.DropDown">
        <item name="listSelector">@drawable/selectable_background_termoweb</item>
    </style>


    <style name="ActionBarTabStyle.Termoweb" parent="@style/Widget.AppCompat.ActionBar.TabView">
        <item name="background">@drawable/tab_indicator_ab_termoweb</item>
    </style>


    <style name="DropDownNav.Termoweb" parent="@style/Widget.AppCompat.Spinner">
        <item name="background">@drawable/spinner_background_ab_termoweb</item>
        <item name="popupBackground">@drawable/menu_dropdown_panel_termoweb</item>
        <item name="dropDownSelector">@drawable/selectable_background_termoweb</item>
    </style>


    <style name="ProgressBar.Termoweb" parent="@style/Widget.AppCompat.ProgressBar.Horizontal">
        <item name="progressDrawable">@drawable/progress_horizontal_termoweb</item>
    </style>


    <style name="ActionButton.CloseMode.Termoweb" parent="@style/Widget.AppCompat.ActionButton.CloseMode">
        <item name="background">@drawable/btn_cab_done_termoweb</item>
    </style>


    <!-- this style is only referenced in a Light.DarkActionBar based theme -->
    <style name="Theme.Termoweb.Widget" parent="@style/Theme.AppCompat">
        <item name="popupMenuStyle">@style/PopupMenu.Termoweb</item>
        <item name="dropDownListViewStyle">@style/DropDownListView.Termoweb</item>
    </style>
</resources>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
    package="com.cidaut.termoweb"
    Android:versionCode="1"
    Android:versionName="1.0" >
    <uses-sdk
        Android:minSdkVersion="8"
        Android:targetSdkVersion="17" />
    <application
        Android:allowBackup="true"
        Android:icon="@drawable/ic_launcher"
        Android:label="@string/app_name"
        Android:theme="@style/Theme.Termoweb" >
        <activity
            Android:name="com.cidaut.termoweb.MainActivity"
            Android:label="@string/app_name" >
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN" />
                <category Android:name="Android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>
26
Charlie-Blake

Also, wie ich dieses Problem gelöst habe:

  1. Importieren Sie die Support-Bibliothek als Projekt aus "sdk/extras/Android/support/v7/appcompat".
  2. Referenzbibliothek in Ihrem Projekt (für Eclipse "Eigenschaften - Android= - Hinzufügen").
  3. Erstellen Sie Projekte (für Eclipse "Projekte - Alle erstellen"). Stellen Sie sicher, dass Sie "Android.support.v7.appcompat" in Ihrem Hauptprojektordner "gen" haben.
  4. Wenn es nicht funktioniert - Projekt bereinigen und neu erstellen.
53
BoredT

Ich habe folgendes gemacht und für mich gearbeitet.

  • Löschen Sie das Glas aus dem libs-Ordner.
  • Importieren Sie das Projekt sdk\extras\Android\support\v7\appcompat\in Ihren Eclipse-Arbeitsbereich.
  • Stellen Sie sicher, dass die Datei "Android-support-v4.jar" in Ihrem Projekt identisch ist.
  • Fügen Sie Ihrem Projekt den appcompat als Bibliothek hinzu.

Stellen Sie sicher, dass Ihre Aktivität in Ihrer Manifest.xml das richtige Thema hat

    <activity
        Android:name="***.*****.******"
        Android:label="@string/app_name"
        Android:theme="@style/Theme.AppCompat.Light"
         >

Viel Glück ;)

14
Angel Ivorra

Zusätzlich zur Antwort von BoredT habe ich diese Zeile zu res/values ​​/ styles.xml hinzugefügt

<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
4
AG1

Befolgen Sie die Schritte unter Hinzufügen von Bibliotheken mit Ressourcen -> Eclipse http://developer.Android.com/tools/support-library/setup.html :

  1. befolgen Sie alle Schritte (Projekt kopieren im Arbeitsbereich verwenden)
  2. hinzufügen Android.library.reference.1=../Android-support-v7-appcompat zu Ihren project.properties
  3. verwenden Android:theme="@style/Theme.AppCompat" Ich habe es in Application Tag verwendet, das Sie auch auf einzelne Aktivitäten anwenden können

Baue alles wieder auf!

2
Prakash

Ich denke, Sie sollten Ihre Zielversion im Manifest auf 18 ändern.

Android:targetSdkVersion="18"
1

So importieren Sie ein Projekt als Bibliothek in Android= studio? Befolgen Sie die Blog-Tipps als Referenz: http://showlabor.blogspot.com.br/2013/05/actionbarsherlock -in-Android-studio-01.html

Die nächste Frage hat auch sehr geholfen: Fehler beim Implementieren der Support Library-Aktionsleiste

Das folgende Bild zeigt die Struktur des importierten Projekts. Das wird in das Stammverzeichnis meines Projekts kopiert und in das Verzeichnis 'libraries' gestellt: https://dl.dropboxusercontent.com/u/67269258/Tuto/tree.PNG

Zusätzlich zur Montage der obigen Struktur. In 'settings.glade' musste ich das neue Projekt hinzufügen:

include ':FreeMusic', ':libraries:ActionBarCompat:appcompat'

Fügen Sie im Bibliotheksprojekt die Datei 'build.gradle' hinzu. Sie befindet sich in: libraries/ActionBarCompat/appcompat

 buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:0.5.+'
    }
}

apply plugin: 'Android-library'

dependencies {
    compile files(
        'libs/Android-support-v4.jar',
        'libs/Android-support-v7-appcompat.jar'
    )
}
Android {
    compileSdkVersion 18
    buildToolsVersion "18.0.1"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 16
    }
    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            Java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
        }

        instrumentTest.setRoot('tests')
    }
}

In 'build.gradle' (internes Projekt) meines Projekts.

dependencies {
 compile project(':libraries:ActionBarCompat:appcompat')
}

In Android Manifest hinzugefügt das notwendige Thema:

<activity
 Android:theme="@style/Theme.AppCompat"
 Android:name="es.hol.soundmedia.MainActivity"

Nach all dieser Arbeit. Vielleicht eine einfachere Möglichkeit, dies einzurichten, aber für mich funktioniert der Account. Leider kann ich das Ergebnis nicht anzeigen, da ich gesperrt bin, aber ich hoffe die Anleitung hilft.

1
alex

Für diejenigen, die keinen manuellen Benutzereingriff in Eclipse benötigen, um einen Build aus dem Checkout zu erstellen, besteht die magische Änderung, die Eclipse vornimmt, darin, eine Zeile zu project.properties hinzuzufügen, wie:

Android.library.reference.1=../Android-support-v7-appcompat

Dies reicht aus, um Ihre Anwendung aus ant zu erstellen. Sie können dies in der Quelle selbst oder über die Eclipse-Benutzeroberfläche tun - so oder so können Sie es in Ihr Versionskontrollsystem einchecken und erfolgreich von einem erneuten Auschecken der Quelle aus erstellen, ohne dass manuelle Schritte erforderlich sind.

Sie können den Pfad jedoch auch zu einem Unterverzeichnis Ihres eigenen Projekts machen, wenn dies besser passt, z.

Android.library.reference.1=Android-support-v7-appcompat

... und ...

cp -r $SDK/extras/Android/support/v7/appcompat Android-support-v7-appcompat

Beachten Sie, dass Eclipse weiterhin verschiedene Warnungen anzeigt, bis das Unterverzeichnis auch [manuell!] Zum Eclipse-Arbeitsbereich als Projekt hinzugefügt wird. Ein Ameisen-Build wird jedoch erfolgreich ohne Verwendung von Eclipse erstellt.

1
David Sainty

So löse ich das Problem: Bauen Sie das Bibliotheksprojekt android-support-v7-appcompat in Ihrem Eclipse-Arbeitsbereich neu auf. Erstellen Sie dann Ihr eigenes Projekt erneut.

1
WayneZhao

Überprüfen Sie, ob R.Java for appcompat v7 jar in Ihren generierten Ordnern Ihrer Anwendung vorhanden ist

0
subash