Tôi đã một ứng dụng mà bạn có thể hiển thị và đóng vài Dialogs với:Android RuntimeException onCreateDialog đã không tạo ra một hộp thoại cho id
showDialog(...)
removeDialog(...)
tôi chơi một chút với các ứng dụng và khi không có bất kỳ Dialog trên màn hình, tôi nhấn nút menu và tôi đi đến màn hình chính của Android.
Sau một thời gian, tôi nhập lại vào ứng dụng của tôi và đôi khi, tôi nhận được RuntimeException này:
java.lang.IllegalArgumentException: Activity#onCreateDialog did not create a dialog for id 4
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)
at android.app.ActivityThread.access$2200(ActivityThread.java:126)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4595)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: Activity#onCreateDialog did not create a dialog for id 4
at android.app.Activity.createDialog(Activity.java:878)
at android.app.Activity.restoreManagedDialogs(Activity.java:867)
at android.app.Activity.performRestoreInstanceState(Activity.java:815)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1096)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2565)
... 11 more
Bất kỳ ý tưởng?
Cảm ơn bạn rất nhiều.
UPDATE, biết thêm thông tin:
Việc thực hiện onCreateDialog hiện nay là:
protected Dialog onCreateDialog(int id){
Builder b = new AlertDialog.Builder(this);
if(id == 4){
b.setMessage(...);
b.setItems(items, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int which){
Intent i = new Intent(Current.this, Another.class);
startActivity(i);
}
});
return b.create();
}
return null;
}
Để gọi chức năng này tôi làm:
removeDialog(4);
showDialog(4);
Yup, tất cả mã đều hoạt động hoàn toàn tốt. Ứng dụng không sụp đổ ở bất cứ đâu. Tôi hiện đang xem các hộp thoại bật lên và đóng hoàn hảo. Vấn đề bắt đầu ngẫu nhiên khi tôi khởi động lại ứng dụng. – zegnus