Android小部件按钮自定义对话框

Android小部件按钮自定义对话框,android,button,widget,Android,Button,Widget,是否可以从窗口小部件按钮打开自定义对话框?我创建了一个带有按钮的小部件。在教程中,如果我单击按钮P1,将显示toast msg。但我希望出现一个自定义对话框。教程中还有一个按钮的意图示例,但是对于我的自定义对话框,它不起作用,但是如果我想用它打开一个活动,它可以正常工作。 我希望在用户单击小部件上的按钮时出现一个自定义对话框 下面是Main.class是活动的代码: public class HelloWidget extends AppWidgetProvider { public stat

是否可以从窗口小部件按钮打开自定义对话框?我创建了一个带有按钮的小部件。在教程中,如果我单击按钮P1,将显示toast msg。但我希望出现一个自定义对话框。教程中还有一个按钮的意图示例,但是对于我的自定义对话框,它不起作用,但是如果我想用它打开一个活动,它可以正常工作。 我希望在用户单击小部件上的按钮时出现一个自定义对话框

下面是Main.class是活动的代码:

public class HelloWidget extends AppWidgetProvider {

public static String ACTION_WIDGET_CONFIGURE = "ConfigureWidget";
public static String ACTION_WIDGET_RECEIVER = "ActionReceiverWidget";

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    context.startService(new Intent(context, UpdateService.class));

     RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widgetmain);
     Intent configIntent = new Intent(context, Main.class);
     configIntent.setAction(ACTION_WIDGET_CONFIGURE);
     PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
     remoteViews.setOnClickPendingIntent(R.id.ButtonP1, configPendingIntent);
     appWidgetManager.updateAppWidget(appWidgetIds, remoteViews);
 }
当我将Main.class更改为CustomizeDialog.class时,什么都没有发生

CustomizeDialog.java简言之如下:

public class CustomizeDialog extends Dialog implements OnClickListener {
Activity mActivity;
public CustomizeDialog(Activity activity) {
        super(activity);
         mActivity = activity;
...
}
@Override
    public void onClick(View v) {

        if (v == okButton)
        {
            dismiss();
            }
        if (v == cancelButton)
        {
            dismiss();
        }
    }
}
编辑2011年6月21日

感谢你们,我能够调用框架布局的活动,这几乎是我想要的。但是,我想使用customdialog来实现这一点,但是对于我正在使用的代码,当我单击小部件按钮时,它不会出现:

Intent configIntent = new Intent(context, CustomizeDialog.class);
     configIntent.setAction(ACTION_WIDGET_CONFIGURE);
     PendingIntent configPendingIntent = PendingIntent.getActivity(context, REQUEST_CODE_THREE, configIntent, 0);
     remoteViews.setOnClickPendingIntent(R.id.ButtonP3, configPendingIntent);
如果我将CustomizeDialog.class更改为Main.class,这是一个活动,它工作正常


请在上面找到CustomDialog.class的结构。

一种方法是在活动中显示对话框,通过单击小部件打开该对话框。如果您使用类似于
FrameLayout
的东西,您可以运行一个活动,该活动似乎悬停在主屏幕顶部。

正如Tanner已经指出的,您应该为此使用一个活动

在清单中,您必须向对话框活动添加一些属性

android:launchMode=“singleInstance”-要将活动(对话框)放置在新任务的根目录下,否则活动将被放置在应用程序中主活动的顶部

android:excludeFromRecents=“true”-因此长按home键无法进入对话框

android:theme=“@android:style/theme.Dialog”-将其设置为对话框样式

<activity android:name=".InputDialog" 
    android:launchMode="singleInstance"
    android:theme="@android:style/Theme.Dialog"
    android:excludeFromRecents="true">
</activity>

我不想打开活动。我只想在用户单击小部件的按钮时显示一个自定义对话框。我开发小部件已经有一段时间了,但我记得小部件对您的操作非常严格。从我所看到的,所有像弹出窗口这样的小部件都是通过活动来实现的,没有人知道解决方案?Idk如何在不显示活动的情况下从活动启动弹出窗口或sg您是否查看了
FrameLayout
?创建一个活动,其布局基于
FrameLayout
并使用宽度/高度。这将导致活动在一个“框架”中运行,该框架看起来很像对话框本身。可以将其视为手动构建对话框。要有创意,我相信你会找到答案的。谢谢你一直在努力从一个小部件中显示一个对话框,至少在对话框取消时关闭活动检查你的项目并添加setOnCancelListener(新的DialogInterface.OnCancelListener(){etc}到我的对话框中效果非常好,谢谢你