requestWindowFeature调用顺序的诡异问题

doubleface999 2017-01-01 09:43:31
初学Android开发,遇到一个诡异的问题,在用
requestWindowFeature(Window.FEATURE_NO_TITLE);
测试隐藏标题栏的时候,在MainActivity的onCreate函数中,有如下代码:

        super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);


我知道requestWindowFeature必须在setContentView函数之前调用,所以上面的代码应该没有问题,但是实测下来居然闪退了!!不管是6.0的真机测试,还是AVD上测试,都会闪退!!
然后我把requestWindowFeature调用放到super.onCreate之前调用,即:

        requestWindowFeature(Window.FEATURE_NO_TITLE);      
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


就完全没问题!
该测试项目有三个Activity,诡异的是:在其它两个Activity的onCreate函数中,如第一段代码的调用顺序就没问题!!

为什么呢??
先谢谢各位!
...全文
264 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
妃夏 2017-01-06
  • 打赏
  • 举报
回复
没事,不用谢
妃夏 2017-01-04
  • 打赏
  • 举报
回复
你activity继承的是AppCompatActivity吗?
doubleface999 2017-01-04
  • 打赏
  • 举报
回复
引用 5 楼 u011186789 的回复:
你把ActionBarActivity换成Activity就可以了,或者是使用supportRequestWindowFeature()方法代替requestWindowFeature()方法,这样也不用放到第一行去调用。另外ActionBarActivity Google已经不推荐使用了,建议使用ToolBar替代。使用AppCompatActivity或者ActionBarActivity都会遇到这个问题,原因大概是Google为Android提供的兼容包导致
谢谢!我之前已经发现是ActionBarActivity引起的这个问题,但是没有查到原因:就是ActionBarActivity为什么会引起这个问题。 谢谢你!
妃夏 2017-01-04
  • 打赏
  • 举报
回复
你把ActionBarActivity换成Activity就可以了,或者是使用supportRequestWindowFeature()方法代替requestWindowFeature()方法,这样也不用放到第一行去调用。另外ActionBarActivity Google已经不推荐使用了,建议使用ToolBar替代。使用AppCompatActivity或者ActionBarActivity都会遇到这个问题,原因大概是Google为Android提供的兼容包导致
doubleface999 2017-01-04
  • 打赏
  • 举报
回复
引用 3 楼 u011186789 的回复:
你activity继承的是AppCompatActivity吗?
public class MainActivity extends ActionBarActivity {
	public static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);        
        Log.d(TAG, "onCreate");
        setContentView(R.layout.activity_main);
......
doubleface999 2017-01-03
  • 打赏
  • 举报
回复
引用 1 楼 u011186789 的回复:
你可以贴一下报错log,这样比较好分析
01-03 18:22:47.681: E/AndroidRuntime(13252): FATAL EXCEPTION: main
01-03 18:22:47.681: E/AndroidRuntime(13252): Process: com.example.activitylifecycletest, PID: 13252
01-03 18:22:47.681: E/AndroidRuntime(13252): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.activitylifecycletest/com.example.activitylifecycletest.MainActivity}: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2547)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2613)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.app.ActivityThread.access$900(ActivityThread.java:180)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1473)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.os.Handler.dispatchMessage(Handler.java:111)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.os.Looper.loop(Looper.java:207)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.app.ActivityThread.main(ActivityThread.java:5710)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at java.lang.reflect.Method.invoke(Native Method)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
01-03 18:22:47.681: E/AndroidRuntime(13252): Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at com.android.internal.policy.PhoneWindow.requestFeature(PhoneWindow.java:330)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.app.Activity.requestWindowFeature(Activity.java:3698)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at com.example.activitylifecycletest.MainActivity.onCreate(MainActivity.java:24)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.app.Activity.performCreate(Activity.java:6288)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1113)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2500)
01-03 18:22:47.681: E/AndroidRuntime(13252): 	... 9 more
妃夏 2017-01-03
  • 打赏
  • 举报
回复
你可以贴一下报错log,这样比较好分析

80,337

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧