- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个普通的 AlertDialog。我使用了 android 开发文档提供的示例。我刚刚将 DIALOG_PAUSED_ID 更改为 DIALOG_DELETEDB。如果我执行我的代码并按下按钮,这反过来会创建对话框,我会收到以下错误日志:
04-29 01:01:20.973: WARN/dalvikvm(1168): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
04-29 01:01:20.973: ERROR/AndroidRuntime(1168): Uncaught handler: thread main exiting due to uncaught exception
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): java.lang.IllegalArgumentException: Activity#onCreateDialog did not create a dialog for id 4
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.app.Activity.createDialog(Activity.java:871)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.app.Activity.showDialog(Activity.java:2483)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at mjb.project.AVV.Favs.onMenuItemSelected(Favs.java:111)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:139)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:525)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.view.View.onTouchEvent(View.java:4179)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.widget.TextView.onTouchEvent(TextView.java:6540)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.view.View.dispatchTouchEvent(View.java:3709)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.os.Handler.dispatchMessage(Handler.java:99)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.os.Looper.loop(Looper.java:123)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at android.app.ActivityThread.main(ActivityThread.java:4363)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at java.lang.reflect.Method.invokeNative(Native Method)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at java.lang.reflect.Method.invoke(Method.java:521)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
04-29 01:01:20.993: ERROR/AndroidRuntime(1168): at dalvik.system.NativeStart.main(Native Method)
so here are the "relevant" code parts:
定义ID:
private static final int DELETE_DB_ID = 3;
private Dialog dialog;
static final int DIALOG_DELETEDB = 4;
onCreateDialog(...):
protected Dialog onCreateDialog(int id) {
switch(id) {
case DIALOG_DELETEDB:
// do the work to define the pause Dialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Favs.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
break;
default:
dialog = null;
}
return dialog;
}
在这里我尝试“创建”对话框:
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()) {
case ADD_ID:
createNote();
return true;
case DELETE_DB_ID:
showDialog(DIALOG_DELETEDB);
return true;
}
return super.onMenuItemSelected(featureId, item);
}
正如我已经说过的,我只是复制了代码并更改了名称。不幸的是,我不明白错误日志消息..:/不知何故,我认为我没有返回创建的对话框,但我看不到我的引用“在哪里”或我必须返回的地方/什么......
在此先感谢您的帮助。
最佳答案
请查看 samples\ApiDemos\src\com\example\android\apis\app\AlertDialogSamples.java,它在那里正确完成。您也可以阅读此 http://developer.android.com/guide/topics/ui/dialogs.html关于正确的 onCreateDialog 用法。这是 onCreateDialog 的固定版本:
protected Dialog onCreateDialog(int id) {
switch(id) {
case DIALOG_DELETEDB:
// do the work to define the pause Dialog
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Favs.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
return alert;
}
return null;
}
另一种方法是直接显示对话框:
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()) {
case DELETE_DB_ID:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Favs.this.finish();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
return true;
}
return super.onMenuItemSelected(featureId, item);
}
关于java - 未创建 AlerDialog - java.lang.IllegalArgumentException : Activity#onCreateDialog did not create a dialog for id X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2733750/
您好,我正在尝试将日期和时间选择器放在一个类中。当我调用时间选择器时,一切正常,但不幸的是,如果我单击日期调用按钮,时间选择器也会出现。 这是我的代码: package com.example.aib
我从 SherlockFragmentActivity 创建了一个 SherlockDialogFragment.. 这是我到目前为止所做的:: DatePickerFragment newFragm
我尝试创建 AlertDialog。它有效,但 setMessage 不刷新消息。下面的代码 fragment : @Override protected Dialog onCreateDia
我得到了 09-20 12:42:26.697: ERROR/AndroidRuntime(721): java.lang.RuntimeException: Unable to start acti
我正在尝试使用 Scala 2.9.2 创建一个 Android 应用程序。到目前为止,我已准备好要编译的所有内容。 但是,当我在我的 Activity 中执行以下操作时遇到了问题: override
在我的 longCLick 应用程序中,我通过这种方法创建了 AlertDialog: @Override protected Dialog onCreateDialog(int id) {
我正在尝试加载 DialogFragment,但我有时会在 onCreateDialog 上得到 null。我不确定它什么时候发生,但不是很少见。我该如何解决这个问题? 实用工具.java c
我有个小问题。在我的程序中我定义了 protected Dialog onCreateDialog(int id) { if (id == CONTEXT_MENU_ID) {
下面的代码无法编译。据我了解,在进行覆盖时,替换类必须与原始类的签名完全匹配,但我认为我正在仔细遵循 Android 文档中的示例。 错误消息: overrides android.app.Activ
我目前正在尝试在单击某个 EditText 时引发 DatePickerDialog。但是,每次单击 EditText 时,应用程序都会崩溃。这是相关代码和LogCat。 EditText 及其 On
我有一个初始化 Google plus View 的对话框 fragment ,有时这些 View 会失败,所以我想在显示给用户之前终止对话框。 如何结束对话创建过程?从返回 Dialog 对象的 o
我正在创建 DialogFragment,当我想覆盖 onCreateDialog 时,我收到以下警告: not annotated method overrides method annotated
当我使用这个方法时出现错误 protected 对话框 onCreateDialog(int id){ 开关(编号){ 案例 DATE_PICKER_DIALOG: 返回 showDatePicker
为了创建对话框,我覆盖了以下方法: protected Dialog onCreateDialog(final int dialogId) { } 为了调用它,我正在使用: showDialog(id
我有一个带有 ProgressBar 的 DialogFragment: public class DialogFragmentProgress extends DialogFragment { fi
我无法覆盖 Fragment 中的 onCreateDialog() 方法。但它允许我在 Activity 中覆盖。 @Override protected Dialog onCreateDialog
我有一个类,我试图在其中创建一个 Dialog,但是当我放置方法 onCreateDialog 时,它看起来被一条线交叉了。它给我以下错误消息: Overrides deprecated method
(使用兼容性库) 我已经实现了一个带有扩展 DialogFragment 的对话框。我在 onCreateDialog 中使用 AlertDialog.Builder 创建对话框(未使用 onCrea
我在 onCreateDialog() 中创建了一个 ProgressDialog,如下所示: protected Dialog onCreateDialog(int id) { if (id =
我有一个应用程序,您可以使用它来显示和关闭多个对话框: showDialog(...) removeDialog(...) 我稍微玩了一下应用程序,当屏幕上没有任何对话框时,我按下菜单按钮,然后转到主
我是一名优秀的程序员,十分优秀!