1

I have a problem with android ConstraintLayout feature... In my app I use a ConstraintLayout, everything works fine when I install my app on a 9+ android version, but when I install the app on a lower android version the app is crashing. In my android project I have: minSdkVersion 21 targetSdkVersion 26 compileSdkVersion 28

Anyone have any idea what might causing it? Or a way to fix it?

Edit: Thanks to @Nikos Hidalgo! I didn't understand the error message correctly. it was my gradient background that broke everything..

The error I get is as follows:

11-12 15:44:32.580 11651-11651/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.repondeurtexto, PID: 11651
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.repondeurtexto/com.example.repondeurtexto.FirstActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3150)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3260)
        at android.app.ActivityThread.access$1000(ActivityThread.java:218)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1734)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:145)
        at android.app.ActivityThread.main(ActivityThread.java:6934)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
     Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class androidx.constraintlayout.widget.ConstraintLayout
        at android.view.LayoutInflater.createView(LayoutInflater.java:640)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:483)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469)
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
        at com.example.repondeurtexto.FirstActivity.onCreate(FirstActivity.java:15)
        at android.app.Activity.performCreate(Activity.java:6609)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3103)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3260) 
        at android.app.ActivityThread.access$1000(ActivityThread.java:218) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1734) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:145) 
        at android.app.ActivityThread.main(ActivityThread.java:6934) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Constructor.newInstance(Native Method)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
        at android.view.LayoutInflater.createView(LayoutInflater.java:614)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:483) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at com.example.repondeurtexto.FirstActivity.onCreate(FirstActivity.java:15) 
        at android.app.Activity.performCreate(Activity.java:6609) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3103) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3260) 
        at android.app.ActivityThread.access$1000(ActivityThread.java:218) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1734) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:145) 
        at android.app.ActivityThread.main(ActivityThread.java:6934) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) 
     Caused by: android.content.res.Resources$NotFoundException: Resource "com.example.repondeurtexto:drawable/gradient" (7f07006c)  is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f07006c a=-1 r=0x7f07006c}
        at android.content.res.Resources.loadDrawableForCookie(Resources.java:4017)
        at android.content.res.Resources.loadDrawable(Resources.java:3929)
        at android.content.res.Resources.loadDrawable(Resources.java:3779)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:776)
        at android.view.View.<init>(View.java:4001)
        at android.view.ViewGroup.<init>(ViewGroup.java:513)
        at android.view.ViewGroup.<init>(ViewGroup.java:509)
        at android.view.ViewGroup.<init>(ViewGroup.java:505)
        at androidx.constraintlayout.widget.ConstraintLayout.<init>(ConstraintLayout.java:575)
        at java.lang.reflect.Constructor.newInstance(Native Method) 
        at java.lang.reflect.Constructor.newInstance(Constructor.java:288) 
        at android.view.LayoutInflater.createView(LayoutInflater.java:614) 
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:483) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
        at android.view.LayoutInflater.inflate(LayoutInflater.java:366) 
        at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:469) 
        at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
        at com.example.repondeurtexto.FirstActivity.onCreate(FirstActivity.java:15) 
        at android.app.Activity.performCreate(Activity.java:6609) 
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134) 
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3103) 
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3260) 
        at android.app.ActivityThread.access$1000(ActivityThread.java:218) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1734) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:145) 
        at android.app.ActivityThread.main(ActivityThread.java:6934) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

In my build.gradle I set this:

implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
Dharman
  • 30,962
  • 25
  • 85
  • 135
Yann ganem
  • 43
  • 7
  • this is the line in your logcat you should be paying attention to: Caused by: android.content.res.Resources$NotFoundException: Resource "com.example.repondeurtexto:drawable/gradient" (7f07006c) is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f07006c a=-1 r=0x7f07006c} API21 can support constraint layout just fine. – Nikos Hidalgo Nov 12 '19 at 14:19
  • 1
    Could you post your xml please? – Skizo-ozᴉʞS ツ Nov 12 '19 at 14:19
  • have a look at this https://stackoverflow.com/questions/29095063/resourcesnotfoundexception-resource-is-not-a-drawable-color-or-path – Nikos Hidalgo Nov 12 '19 at 14:20

3 Answers3

0

As the documentation states, ConstraintLayout for now is only available as a support library that you can use on Android systems starting with API level 9 (Gingerbread).

Helton Malambane
  • 1,147
  • 11
  • 12
0

Your targetSdkVersion and compileSdkVersion should be same.

targetSdkVersion 28
compileSdkVersion 28
user1506104
  • 6,554
  • 4
  • 71
  • 89
kaushal malvi
  • 72
  • 1
  • 6
0

ConstraintLayout is available in an API library that's compatible with Android 2.3 (API level 9) and higher. This page provides a guide to building a layout with ConstraintLayout in Android Studio 2.3 or higher.

Build responsive UI with ContraintLayout

Ensure you have the required modules in your gradle.Also see this link to solve NullPointExceptions

Check if you have ids that are conflicting with the new design library.

Check your XML file name,make sure your XML file name is included in your MainActivity layout:

setContentView(R.layout.xmlfilename_main);