Error: You need to use a Theme. AppCompat theme (or descendant) with this activity., theme. appcompat Error
You want to test the difference between onPause () and onStop () through the Dialog topic when learning the Activity lifecycle.
An error occurred while clicking the button to jump to the Activity:
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.activitylifecycletest, PID: 2920 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.activitylifecycletest/com.example.activitylifecycletest.DialogActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) Caused by: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:347) at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:316) at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:281) at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) at com.example.activitylifecycletest.DialogActivity.onCreate(DialogActivity.java:11) at android.app.Activity.performCreate(Activity.java:6664) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Find the most useful sentence, indicating that the theme used does not match the current Activity.
You need to use a Theme.AppCompat theme (or descendant) with this activity.
The activity configuration in AndroidManifest. xml is as follows:
1 <activity2 android:name=".DialogActivity"3 android:theme="@android:style/Theme.Dialog">4 </activity>
Follow the error message to change to the AppCompat topic:
1 <activity2 android:name=".DialogActivity"3 android:theme="@style/Theme.AppCompat.Dialog">4 </activity>
After checking the java code, I found that my Activity inherits the AppCompatActivity class. When creating an Activity in Android Studio, if the Backwards Compatibility (AppCompat) option is selected, the created Activity inherits the AppCompatActivity instead of the Activity. In this case, you need to use the corresponding APPCompat topic.
Java code:
1 import android.support.v7.app.AppCompatActivity; 2 import android.os.Bundle; 3 4 public class DialogActivity extends AppCompatActivity { 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_dialog);10 }11 12 }