如何在窗口小部件上显示对话框?

时间:2010-10-05 10:24:23

标签: android dialog widget

我想显示一个对话框,就像我在Activity上使用showDialog(...),但我需要在一个小部件上这样做,所以我不能使用showDialog(...)。我怎么能这样做?

我在onReceive方法上尝试了这个但它崩溃了:

AlertDialog.Builder builder;
            builder = new AlertDialog.Builder(context);
            builder.setMessage("Are you sure?")
            .setCancelable(false)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    db.open();
                    db.remove_last();
                    db.close();
                    dialog.dismiss();
                }
            })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    dialog.cancel();
                }
            });
            builder.show();

谢谢,Valerio

2 个答案:

答案 0 :(得分:4)

小部件不是为了支持这种交互,并且由于它们是在启动器的UID而不是应用程序的UID下运行的,因此它们无法访问数据库。 (这可能是导致崩溃的原因;请查看日志以确定。)

在您的应用程序中启动执行您想要的活动。如果您希望它看起来像一个对话框,请应用Theme.Dialog样式:

<activity
  android:name=".MyThing"
  android:label="@string/mythinglabel"
  android:theme="@android:style/Theme.Dialog"
/>

答案 1 :(得分:0)

对话框必须来自活动,而不是来自小工具。