studio lollipop android android-viewpager inflate-exception

lollipop - android studio api 22



El proyecto Android Studio funciona en Lollipop pero no funciona en Kitkat (3)

Tengo un proyecto de Android Studio que funciona bien en dispositivos con la versión de compilación de Android Lollipop, pero lanza una excepción cuando intento ejecutarlo en un dispositivo con la versión de compilación de Android Kitkat. Este es el archivo build.gradle de mi proyecto:

android { compileSdkVersion 21 buildToolsVersion "21.1.2" defaultConfig { minSdkVersion 16 targetSdkVersion 21 versionCode 1 versionName "1.0" multiDexEnabled true renderscriptTargetApi 22 renderscriptSupportModeEnabled true } } dependencies { compile fileTree(dir: ''libs'', include: [''*.jar'']) compile files(''libs/org.apache.commons.io.jar'') compile files(''libs/commons-codec-1.10.jar'') compile(''com.twitter.sdk.android:twitter:1.6.0@aar'') { transitive = true; } compile files(''libs/pinit-sdk-1.0.jar'') compile project('':bounceScroller'') compile ''com.ogaclejapan.smarttablayout:library:1.2.1@aar'' compile ''com.facebook.android:facebook-android-sdk:4.1.0'' compile ''com.android.support:appcompat-v7:21.2.0'' compile ''com.github.navasmdc:MaterialDesign:1.5@aar'' compile ''com.nineoldandroids:library:2.4.+'' compile ''com.esri.arcgis.android:arcgis-android:10.2.6-2'' compile ''com.github.clans:fab:1.5.3'' compile ''com.github.pedrovgs:draggablepanel:1.8'' compile ''com.android.support:support-v4:21.2.0'' compile ''com.ogaclejapan.smarttablayout:utils-v4:1.2.1@aar'' compile ''com.github.bumptech.glide:glide:3.6.0'' compile project('':rangeseekbar'') compile ''com.android.support:recyclerview-v7:22.2.0'' compile ''com.android.support:cardview-v7:22.2.0'' compile project('':blurry'') compile ''com.google.android.gms:play-services:7.8.0'' }

y aquí está el error que obtengo cuando ejecuto la aplicación en un dispositivo Kitkat:

java.lang.RuntimeException: Unable to start activity: android.view.InflateException: Binary XML file line #14: Error inflating class android.support.v4.view.ViewPager at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) at android.app.ActivityThread.access$900(ActivityThread.java:161) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:157) at android.app.ActivityThread.main(ActivityThread.java:5356) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) at dalvik.system.NativeStart.main(Native Method) Caused by: android.view.InflateException: Binary XML file line #14: Error inflating class android.support.v4.view.ViewPager at android.view.LayoutInflater.createView(LayoutInflater.java:626) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702) at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) at android.view.LayoutInflater.inflate(LayoutInflater.java:498) at android.view.LayoutInflater.inflate(LayoutInflater.java:398) at android.view.LayoutInflater.inflate(LayoutInflater.java:354) at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:359) at android.app.Activity.setContentView(Activity.java:2010) at android.visitabudhabi.com.vad.Walkthrough.onCreate(Walkthrough.java:32) at android.app.Activity.performCreate(Activity.java:5426) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)             at android.app.ActivityThread.access$900(ActivityThread.java:161)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:157)             at android.app.ActivityThread.main(ActivityThread.java:5356)             at java.lang.reflect.Method.invokeNative(Native Method)             at java.lang.reflect.Method.invoke(Method.java:515)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)             at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at android.view.LayoutInflater.createView(LayoutInflater.java:600)             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)             at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)             at android.view.LayoutInflater.inflate(LayoutInflater.java:498)             at android.view.LayoutInflater.inflate(LayoutInflater.java:398)             at android.view.LayoutInflater.inflate(LayoutInflater.java:354)             at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:359)             at android.app.Activity.setContentView(Activity.java:2010)             at android.visitabudhabi.com.vad.Walkthrough.onCreate(Walkthrough.java:32)             at android.app.Activity.performCreate(Activity.java:5426)             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)             at android.app.ActivityThread.access$900(ActivityThread.java:161)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:157)             at android.app.ActivityThread.main(ActivityThread.java:5356)             at java.lang.reflect.Method.invokeNative(Native Method)             at java.lang.reflect.Method.invoke(Method.java:515)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)             at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NoClassDefFoundError: android.support.v4.view.ViewConfigurationCompatFroyo at android.support.v4.view.ViewConfigurationCompat$FroyoViewConfigurationVersionImpl.getScaledPagingTouchSlop(ViewConfigurationCompat.java:56) at android.support.v4.view.ViewConfigurationCompat.getScaledPagingTouchSlop(ViewConfigurationCompat.java:105) at android.support.v4.view.ViewPager.initViewPager(ViewPager.java:368) at android.support.v4.view.ViewPager.<init>(ViewPager.java:356)             at java.lang.reflect.Constructor.constructNative(Native Method)             at java.lang.reflect.Constructor.newInstance(Constructor.java:423)             at android.view.LayoutInflater.createView(LayoutInflater.java:600)             at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)             at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)             at android.view.LayoutInflater.inflate(LayoutInflater.java:498)             at android.view.LayoutInflater.inflate(LayoutInflater.java:398)             at android.view.LayoutInflater.inflate(LayoutInflater.java:354)             at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:359)             at android.app.Activity.setContentView(Activity.java:2010)             at android.visitabudhabi.com.vad.Walkthrough.onCreate(Walkthrough.java:32)             at android.app.Activity.performCreate(Activity.java:5426)             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)             at android.app.ActivityThread.access$900(ActivityThread.java:161)             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)             at android.os.Handler.dispatchMessage(Handler.java:102)             at android.os.Looper.loop(Looper.java:157)             at android.app.ActivityThread.main(ActivityThread.java:5356)             at java.lang.reflect.Method.invokeNative(Native Method)             at java.lang.reflect.Method.invoke(Method.java:515)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)             at dalvik.system.NativeStart.main(Native Method)

Este es mi XML que tiene ViewPager:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="wrap_content" android:overScrollMode="never" /> <LinearLayout android:layout_width="match_parent" android:layout_height="5dp" android:layout_below="@+id/pager" android:layout_gravity="bottom" android:orientation="horizontal"> <ImageView android:id="@+id/first" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="3.3" android:background="#c7333f" /> <ImageView android:id="@+id/second" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="3.3" android:background="#FFF" /> <ImageView android:id="@+id/third" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="3.3" android:background="#fff" /> </LinearLayout> </FrameLayout>

¿Alguien sabe cómo resolver esto?


Así es como resolví el problema si alguien llega aquí.

Después de buscar profundamente sobre el problema, descubrí que no es una excepción inflar, aunque eso es lo que dijo el logcat, la verdadera excepción fue la excepción OutOfMemory causada por el infame 65K problema, haga clic aquí para obtener más información sobre el problema y fue envuelto con el inflar excpetion.

Para resolver el problema, primero agregué la biblioteca de soporte multidex en mi archivo build.gradle:

compile ''com.android.support:multidex:1.0.0''

Luego seguí estos tres sencillos pasos para que funcione:

  1. Si no está implementando una clase de Aplicación usted mismo, puede simplemente definir la Aplicación MultiDex de la biblioteca en su archivo de Manifiesto de Android bajo la etiqueta de la aplicación:

    android: name = "android.support.multidex.MultiDexApplication"

  2. Si está implementando su propia clase de aplicación, puede simplemente anular el archivo MultiDexApplication:

    la clase pública MyAwesomeApplication extends MultiDexApplication {

  3. O si su clase de aplicación ya está ampliando otra clase, puede simplemente anular el método attachBaseContext y agregarle la siguiente llamada:

    @Override protected void attachBaseContext (Base de contexto) {super.attachBaseContext (context); Multidex.install (esto); }

Ya tenía mi propia clase de aplicación que se extiende desde la clase "Aplicación", así que salté directamente al paso 3 y vi que funcionó en Kitkat y en Lollipop.

Espero que esto ayude a cualquiera. Feliz Codificación.


Bueno . Al principio llama a fill_parent .

<android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="fill_parent" android:overScrollMode="never" />

Y usa esto en lugar del tuyo.

compile ''com.android.support:support-v4:21.0.3''

establecer targetSdkVersion 19

Edit1

configura

compileSdkVersion 23 buildToolsVersion "23.0.1"

y

targetSdkVersion 23

Espero que te ayude.


El problema principal es que su compileSdkVersion no coincide con la versión principal de las bibliotecas de soporte que incluye con el proyecto. Sigue estas reglas:

Establezca targetSdkVersion en 22 porque desea utilizar las características de Lollipop en dispositivos Lollipop (y por el momento no le importa Marshmallow).

Establezca compileSdkVersion en 23 porque es el más nuevo.

Establezca buildToolsVersion en "23.0.1" porque es el más nuevo.

Establezca las versiones de la biblioteca de soporte en la última compilaciónSdkVersion coincidente:

compile ''com.android.support:appcompat-v7:23.1.0'' compile ''com.android.support:support-v4:23.1.0'' compile ''com.android.support:recyclerview-v7:23.1.0'' compile ''com.android.support:cardview-v7:23.1.0''