错误描述
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.chencong.activitylifecycletest/com.example.chencong.activitylifecycletest.DialogActivity}: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
错误来由
因为我想将DialogActivity设置为dialog对话框模式,在AndroidManifest.xml里面配置代码如下:
<activity
android:name=".DialogActivity"
android:theme="@android:style/Theme.Dialog">
</activity>
原因
在上面提到的错误提示中,说到了Theme.AppCompat theme,这是因为我们的activity一定是继承了兼容包中的类。
当我打开DialogActivity类时候,是我继承了AppCompatActivity这个类,因为之前都是继承的这个类。
public class DialogActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_layout);
}
}
错误原因找到了,那么只需要配合使用AppCompatActivity的Theme就行了。
解决方法
根据提示来使用AppCompat的theme,如下:
<activity
android:name=".DialogActivity"
android:theme="@style/Theme.AppCompat.Dialog">
</activity>
结果
能够在显示对话框
点击Button然后显示DialogActivity对话框