如何从窗口小部件启动对话框?

时间:2011-11-17 12:28:40

标签: android button android-widget

我无法找到一个小部件在单击时启动对话框的情况。你有什么想法?

我有这段代码

public void onUpdate(Context c, AppWidgetManager appWidgetManager,int[] appWidgetIds) {
    final int N = appWidgetIds.length;
    AppWidgetManager mgr = AppWidgetManager.getInstance(c);
     for (int i=0; i<N; i++) {
            int appWidgetId = appWidgetIds[i];
    RemoteViews views = new RemoteViews(c.getPackageName(), R.layout.widget_layout);
    Intent fireDialog = new Intent(c,Execute.class);

    Toast test=Toast.makeText(c.getApplicationContext(),"onUpdate",Toast.LENGTH_LONG);
    test.show();
    PendingIntent pendingIntent = PendingIntent.getActivity(c, appWidgetId, fireDialog, PendingIntent.FLAG_UPDATE_CURRENT);
    views.setOnClickPendingIntent(R.id.Button, pendingIntent);
    Log.w(LOG_TAG,"Called");
    mgr.updateAppWidget(appWidgetId, views);
     }
}

3 个答案:

答案 0 :(得分:9)

我在这里假设“小部件”是指“应用小部件”,应用程序可以添加到用户主屏幕的交互式元素。

应用小部件无法显示Dialog,因为这只能由Activity完成。您的应用小部件可以通过Activity启动startActivity()。而且,您可以将android:theme="@android:style/Theme.Dialog"添加到元素中,从而将您的活动设为主题。

答案 1 :(得分:2)

使用对话框主题制作活动,并将其命名为

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

答案 2 :(得分:0)

您可create an AlertDialog customized满足您的需求。然后,您可以alertDialog.show()从其他小部件的onClickListener回调(例如按钮)来显示对话框。