Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding cont

系统管理员 2022-07-13 07:49 157阅读 0赞

这个Android运行时异常,要求requestWindowFeature方法必须在setContentView加载布局之前调用。

导致错误的方法调用顺序:

  1. public void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. setContentView(R.layout.tab_choice);
  4. requestWindowFeature(Window.FEATURE_NO_TITLE);
  5. }

其中:setContentView(R.layout.tab_choice); requestWindowFeature(Window.FEATURE_NO_TITLE);两行顺序换一下就可以了;应该改为:

  1. public void onCreate(Bundle savedInstanceState) {
  2. super.onCreate(savedInstanceState);
  3. requestWindowFeature(Window.FEATURE_NO_TITLE);
  4. setContentView(R.layout.tab_choice);
  5. }

再稳妥的做法如下:

  1. public void onCreate(Bundle savedInstanceState) {
  2. getWindow().requestFeature(Window.FEATURE_ACTION_BAR); super.onCreate(savedInstanceState);
  3. setContentView();
  4. }
  5. Android java的执行顺序有关!目前遇到的这个问题就是因为在系统运行开始的时候就已经调用父类的构造方法super.onCreate,接着调用setContentView方法加载视图界面。R.layout.mainR.java资源类中的一个属性。当你在调用这个方法之后在声明Widget就会报:android.util.AndroidRuntimeException:requestFeature() must be called before adding content

所以前面的那三句中加载Activity的样式的那句代码一定要写在中间。

  1. 如果方法调用的顺序没问题,还是抛出异常,那可能是你的Activity继承了ActionBarActivity之后requestFeature就会这样,大概是因为ActionBarActivity自身给你的content加了个actionbar,然后你再调用requestFeature的时候他就已经给加上了,导致这个错误,改用继承Activity就可以了。

发表评论

表情:
评论列表 (有 0 条评论,157人围观)

还没有评论,来说两句吧...

相关阅读