Widget在单击时启动Dialog

时间:2011-02-24 06:12:21

标签: android

是否可以在窗口小部件上单击启动对话框,或者是否必须在窗口小部件上启动活动,然后单击对话框?

2 个答案:

答案 0 :(得分:10)

我相信你已经解决了这个问题,但无论如何我都会写在这里,以防其他像我一样的人来这个答案。

要通过单击窗口小部件启动对话框,您可以定义一个样式为对话框的活动,并在单击窗口小部件时启动它。

首先在清单中添加活动,我们称之为DialogWidgetActivity

<activity
    android:name=".DialogWidgetActivity"
    android:theme="@android:style/Theme.Dialog"
    ...
/>

然后在你的WidgetProvider中,让我们称之为MyWidgetProvider通过启动活动绑定小部件的点击

public class MyWidgetProvider extends AppWidgetProvider {

public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {

    final int N = appWidgetIds.length;

    // Perform this loop procedure for each App Widget that belongs to this
    // provider
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];

        // Create an Intent to launch the activity-dialog
        Intent intent = new Intent(context, DialogWidgetActivity.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);

        // Get the layout for the App Widget and attach an on-click listener
        // to it
        RemoteViews views = new RemoteViews(context.getPackageName(),
                R.layout.widget);
        views.setOnClickPendingIntent(R.id.widget_container, pendingIntent);

        // Tell the AppWidgetManager to perform an update on the current app
        // widget
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

}
}

请注意,这里我们将活动的启动绑定到对话框的widget_container元素上。您可以通过将id widget_container android:id="@+id/widget_container"分配给窗口小部件布局的根元素来轻松实现此目的。

然后,您可以像编写正常的全屏活动一样编写活动对话框及其布局。

我的来源是this answerthe Android documentation

希望我帮助过:)

答案 1 :(得分:-1)

您可以点击小部件启动AlertDialog

<强>更新

为onclick侦听器添加以下代码。

    AlertDialog.Builder dialog = new AlertDialog.Builder(context);
    dialog.setMessage("Message");
    dialog.show();
相关问题