I have this error on devices that API below 24
05-02 19:56:33.554 17406-17406/com.aisolutions.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.aisolutions.myapplication, PID: 17406
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.aisolutions.myapplication/com.aisolutions.myapplication.Model.MainActivity}: android.view.InflateException: Binary XML file line #11: Error inflating class android.view.View
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3163)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3273)
at android.app.ActivityThread.access$1000(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1735)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6959)
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 #11: Error inflating class android.view.View
at android.view.LayoutInflater.createView(LayoutInflater.java:640)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:672)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:65)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.aisolutions.myapplication.Model.MainActivity.onCreate(MainActivity.java:29)
at android.app.Activity.performCreate(Activity.java:6609)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3116)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3273)
at android.app.ActivityThread.access$1000(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1735)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6959)
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.onCreateView(LayoutInflater.java:672)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:65)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.aisolutions.myapplication.Model.MainActivity.onCreate(MainActivity.java:29)
at android.app.Activity.performCreate(Activity.java:6609)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3116)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3273)
at android.app.ActivityThread.access$1000(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1735)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6959)
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.aisolutions.myapplication:drawable/bgheader" (7f080060) is not a Drawable (color or path): TypedValue{t=0x1/d=0x7f080060 a=-1 r=0x7f080060}
at android.content.res.Resources.loadDrawableForCookie(Resources.java:4050)
at android.content.res.Resources.loadDrawable(Resources.java:3962)
at android.content.res.Resources.loadDrawable(Resources.java:3812)
at android.content.res.TypedArray.getDrawable(TypedArray.java:776)
at android.view.View.<init>(View.java:4001)
at android.view.View.<init>(View.java:3909)
at android.view.View.<init>(View.java:3888)
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.onCreateView(LayoutInflater.java:672)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:65)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:689)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:748)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
at android.view.LayoutInflater.inflate(LayoutInflater.java:366)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.aisolutions.myapplication.Model.MainActivity.onCreate(MainActivity.java:29)
at android.app.Activity.performCreate(Activity.java:6609)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3116)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3273)
at android.app.ActivityThread.access$1000(ActivityThread.java:219)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1735)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6959)
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)
MainActivity.java
package com.aisolutions.myapplication.Model;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import androidx.multidex.MultiDex;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.aisolutions.myapplication.Database.DatabaseHelper;
import com.aisolutions.myapplication.Details.SharedPrefs;
import com.aisolutions.myapplication.R;
public class MainActivity extends AppCompatActivity {
TextView btn_logout, rankView, gpaView;
CardView viewResults, viewPass, viewRepeat, viewNotAttend;
DatabaseHelper databaseHelperMain;
String[] data = new String[2];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_logout = findViewById(R.id.btn_logout);
viewResults = findViewById(R.id.viewResult);
viewPass = findViewById(R.id.viewPass);
viewRepeat = findViewById(R.id.viewRepeat);
viewNotAttend = findViewById(R.id.viewNotAttend);
rankView = findViewById(R.id.main_rank_txt);
gpaView = findViewById(R.id.main_gpa_text);
databaseHelperMain = new DatabaseHelper(this);
data = getData();
rankView.setText(data[0]);
gpaView.setText(data[1]);
viewResults.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, ResultsMain.class);
startActivity(intent);
}
});
viewPass.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, CategorizeResults.class);
intent.putExtra("category", "Pass Subjects");
startActivity(intent);
}
});
viewRepeat.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, CategorizeResults.class);
intent.putExtra("category", "Repeat Subjects");
startActivity(intent);
}
});
viewNotAttend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, CategorizeResults.class);
intent.putExtra("category", "Not Attended Subjects");
startActivity(intent);
}
});
btn_logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPrefs.saveSharedSetting(MainActivity.this, "MyLogin", "true");
//And when you click on Logout button, You will set the value to True AGAIN
Intent LogOut = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(LogOut);
databaseHelperMain.onLogout(MainActivity.this);
finish();
}
});
CekSession();
}
private void CekSession() {
Boolean Check = Boolean.valueOf(SharedPrefs.readSharedSetting(MainActivity.this, "MyLogin", "true"));
Intent introIntent = new Intent(MainActivity.this, LoginActivity.class);
introIntent.putExtra("MyLogin", Check);
//The Value if you click on Login Activity and Set the value is FALSE and whe false the activity will be visible
if (Check) {
startActivity(introIntent);
finish();
} //If no the Main Activity not Do Anything
}
public String[] getData() {
String[] data = new String[2];
Cursor cursor = databaseHelperMain.getAllData("Details");
while (cursor.moveToNext()) {
data[0] = cursor.getString(4);
data[1] = cursor.getString(3);
}
return data;
}
}
Problem is showing this line
setContentView(R.layout.activity_main);
This app fully work on API 24. but not working others
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.aisolutions.myapplication"
minSdkVersion 19
targetSdkVersion 29
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
}
I have CardViews in XML file. and I use sharedpreferences. I think the problem is in sharedpreferences but I am not sure. other cardview projects work on that devices well.