Android问题 #1:You need to use a Theme.AppCompat theme

最近开始设计一个自己日常使用的App,由于班班要炫耀他的亲儿子,我就先做 Android 版本的,于是肯定会碰到常见的问题,在此就做个小集合

正文

一开始使用系统自动生成的 java 文件,代码如下

1
2
3
4
5
6
7
8
9
10
11
12
import android.support.v7.app.AppCompatActivity;

public class ActivityMain extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

// 代码省略...
}

然后报错了,错误详情如下

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

折腾了一番是因为系统生成的是 extends AppCompatActivity ,它来自 android.support.v7.app.ActionBarActivity ,所以需要用系统定制 Theme

然而,因为效果要求需要全屏显示,于是 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" ,但是这个继承的类不支持,所以报错了。

最后改成继承 Activity 类就一切正常了。

1
2
3
4
5
6
7
8
9
10
11
12
import android.app.Activity;

public class ActivityMain extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

// 代码省略...
}

如果没有什么特殊要求的话,一切 Activity 继承 Activity 类就足够了。

参考

Android问题集锦之二十八