android proyectos Error al implementar la barra de acciones de la biblioteca de soporte




manual de programacion android pdf (8)

Siga los pasos de Agregar bibliotecas con recursos -> Eclipse http://developer.android.com/tools/support-library/setup.html :

  1. siga todos los pasos (use copiar proyecto en el espacio de trabajo)
  2. agregue android.library.reference.1=../android-support-v7-appcompat a su project.properties
  3. use android:theme="@style/Theme.AppCompat" Lo usé en la etiqueta de la aplicación que puede aplicar también a actividades individuales

¡Reconstruye todo!

Estoy tratando de implementar la nueva biblioteca de soporte de v7 ActionBar . Sin embargo, no puedo hacer que funcione correctamente.

Aquí está la excepción

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)

El problema ocurre en la super.onCreate(bundle) a super.onCreate(bundle) en onCreate() .

Aquí está todo mi XML relacionado con temas:

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>

Answer #1

¿Cómo importar un proyecto como una biblioteca en el estudio de Android? Siga el blog de consejos como referencia: http://showlabor.blogspot.com.br/2013/05/actionbarsherlock-in-android-studio-01.html

La siguiente pregunta también ayudó mucho: Error al implementar Support Library Action Bar

La siguiente imagen muestra la estructura del proyecto importado. Eso se copia a la raíz de mi proyecto y se coloca en el directorio 'libraries': https://dl.dropboxusercontent.com/u/67269258/Tuto/tree.PNG

Además de montar la estructura anterior. En 'settings.glade' tuve que agregar el nuevo proyecto:

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

Dentro del proyecto de la biblioteca, se agregó el archivo 'build.gradle'. Se encuentra en: 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')
    }
}

En 'build.gradle' (proyecto interno) de mi proyecto.

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

En Android manifest añadido el tema necesario:

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

Después de todo este trabajo. Quizás una forma más fácil de configurar esto, pero para mí la cuenta está funcionando. Desafortunadamente no puedo mostrar el resultado, porque estoy siendo bloqueado, pero espero que las instrucciones te ayuden.


Answer #2

Creo que deberías cambiar tu versión objetivo a 18 en el manifiesto.

android:targetSdkVersion="18"

Answer #3

He hecho lo siguiente y trabajado para mí.

  • Elimine el jar de la carpeta libs.
  • Importe el proyecto sdk \ extras \ android \ support \ v7 \ appcompat \ project en su espacio de trabajo de eclipse.
  • Asegúrese de que android-support-v4.jar sea el mismo en su proyecto.
  • Agregue el appcompat como una biblioteca a su proyecto.

Asegúrese de que en su archivo Manifest.xml su actividad tenga el tema correcto

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

Buena suerte ;)


Answer #4

Para aquellos a los que no les guste necesitar el esfuerzo manual del usuario en Eclipse para hacer una compilación desde el proceso de pago, el cambio mágico que hace Eclipse es agregar una línea a project.properties como:

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

Esto es suficiente para construir su aplicación de hormiga. Puede hacer esto en la fuente usted mismo, o a través de la interfaz de usuario de Eclipse; de ​​cualquier manera puede verificarlo en su sistema de control de versiones y compilar con éxito desde una nueva verificación de la fuente sin requerir pasos manuales.

Pero en su lugar, puede hacer que el camino sea un subdirectorio de su propio proyecto, si es que se adapta mejor, por ej.

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

... y ...

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

Tenga en cuenta que Eclipse aún mostrará varias advertencias hasta que el subdirectorio también se agregue [manualmente!] Al espacio de trabajo de Eclipse como un proyecto. Pero una compilación ant construirá con éxito sin usar Eclipse.


Answer #5

Compruebe si R.java para appcompat v7 jar está presente en las carpetas generadas de su aplicación


Answer #6

Además de la respuesta de BoredT, agregué esta línea a res / values ​​/ styles.xml

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

Answer #7

Así es como resuelvo el problema: reconstruya el proyecto de la biblioteca adroid-support-v7-appcompat en su espacio de trabajo de eclipse. Luego crea tu propio proyecto de nuevo.