2012-07-25 131 views
0

這一次我不明白,在所有之前被調用,我想用這樣的requestFeature()必須添加錯誤

d.setContentView(R.layout.incident_dialog_layout); 
d.requestWindowFeature(Window.FEATURE_NO_TITLE); 

這樣做沒有標題顯示自定義對話框給我一個錯誤

07-25 11:56:23.737: E/AndroidRuntime(15680): android.util.AndroidRuntimeException: requestFeature() must be called before adding content 
07-25 11:56:23.737: E/AndroidRuntime(15680): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:215) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.app.Dialog.requestWindowFeature(Dialog.java:1031) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at ecm2.android.MainActivity.createNewDialog(MainActivity.java:1121) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at ecm2.android.MainActivity$ListViews.onListItemClick(MainActivity.java:614) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.support.v4.app.ListFragment$2.onItemClick(ListFragment.java:58) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.widget.AbsListView.performItemClick(AbsListView.java:1086) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.widget.AbsListView$1.run(AbsListView.java:3529) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.os.Handler.handleCallback(Handler.java:615) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.os.Looper.loop(Looper.java:137) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at android.app.ActivityThread.main(ActivityThread.java:4745) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at java.lang.reflect.Method.invokeNative(Native Method) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at java.lang.reflect.Method.invoke(Method.java:511) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
07-25 11:56:23.737: E/AndroidRuntime(15680): at dalvik.system.NativeStart.main(Native Method) 

確定這很簡單隻需要改變其中的請求。所以,我然後將其更改到這個

d.requestWindowFeature(Window.FEATURE_NO_TITLE); 
d.setContentView(R.layout.incident_dialog_layout); 

對話框作品,直到我開始一個新的活動,當我回去,然後點擊創建對話框我得到這個錯誤

07-25 11:51:19.182: E/AndroidRuntime(15376): android.util.AndroidRuntimeException: requestFeature() must be called before adding content 
07-25 11:51:19.182: E/AndroidRuntime(15376): at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:215) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.app.Dialog.requestWindowFeature(Dialog.java:1031) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at ecm2.android.MainActivity.createNewDialog(MainActivity.java:1120) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at ecm2.android.MainActivity$ListViews.onListItemClick(MainActivity.java:614) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.support.v4.app.ListFragment$2.onItemClick(ListFragment.java:58) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.widget.AbsListView.performItemClick(AbsListView.java:1086) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.widget.AbsListView$1.run(AbsListView.java:3529) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.os.Handler.handleCallback(Handler.java:615) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.os.Looper.loop(Looper.java:137) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at android.app.ActivityThread.main(ActivityThread.java:4745) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at java.lang.reflect.Method.invokeNative(Native Method) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at java.lang.reflect.Method.invoke(Method.java:511) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
07-25 11:51:19.182: E/AndroidRuntime(15376): at dalvik.system.NativeStart.main(Native Method) 

那麼什麼是項目想讓我做,那麼我無法擁有它之後,我設置了內容nore我可以擁有它之前,我發送的內容?????

+2

是否在onCreate()方法中設置了該代碼? – 2012-07-25 16:12:03

+0

不是,它是在一種方法中根據傳入的信息創建一對不同的對話框,基本上它是一個對話框,通過列表項單擊 – tyczj 2012-07-25 16:13:10

回答

3

你得到這個錯誤,因爲你設置的對話框佈局(這是,當你來到從第二活動後)第二次,你已經在你的屏幕上的內容。

因此,呼籲requestWindowFeature這第二次導致錯誤。

你得該語句移動到onCreate()方法,因此只有一個時間被稱爲requestFeature,確保沒有內容其呼叫前加入。

0

基於對這一問題的第二個意見,我猜想,您呼叫的在onStart或方法的onResume requestFeature()。

requestFeature,還有的setContentView,應該叫的onCreate()。如果您在其他地方執行此操作,它將會再次被調用並導致您的應用出現錯誤。