我想显示一个对话框,就像我在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
答案 0 :(得分:4)
小部件不是为了支持这种交互,并且由于它们是在启动器的UID而不是应用程序的UID下运行的,因此它们无法访问数据库。 (这可能是导致崩溃的原因;请查看日志以确定。)
在您的应用程序中启动执行您想要的活动。如果您希望它看起来像一个对话框,请应用Theme.Dialog
样式:
<activity
android:name=".MyThing"
android:label="@string/mythinglabel"
android:theme="@android:style/Theme.Dialog"
/>
答案 1 :(得分:0)
对话框必须来自活动,而不是来自小工具。