應用在模擬器與真機上均啟動即閃退,LogCat 顯示:
java.lang.RuntimeException: Unable to start activity ...
Caused by: android.util.AndroidRuntimeException: requestFeature() must be called before adding content
在 Activity.onCreate() 中,requestWindowFeature(Window.FEATURE_NO_TITLE) 呼叫位於 setContentView() 之後。Android 要求視窗特性必須在佈局加載前設定。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 1. 先請求視窗特性
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 2. 再設定佈局
setContentView(R.layout.your_layout_filename);
// 3. 初始化 UI 元件
mDrawOnTop = new DrawOnTop(this);
mPreview = new Preview(this, mDrawOnTop);
setContentView(mPreview);
addContentView(mDrawOnTop, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
}
super.onCreate() 之後、setContentView() 之前呼叫 requestWindowFeature()。ActionBar 或 Toolbar,同樣遵循此順序。官方文檔 Activity.requestWindowFeature 明確規定:「Must be called before adding content.」。