小部件点击后启动对话框

3

在小部件点击时是否可以启动对话框,或者必须在小部件点击后启动活动,再启动对话框?

2个回答

11

我相信你已经解决了这个问题,但是我还是会在这里写一下,以防其他和我一样的人看到这个答案。

要通过点击小部件来启动对话框,您可以定义一个类似对话框的活动,并在单击小部件时启动它。

首先在清单文件中添加该活动,我们将其称为DialogWidgetActivity

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

然后在你的小部件提供程序中,我们称其为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”分配给小部件布局的根元素来轻松实现此目标。
然后,您可以像为正常全屏活动一样编写活动对话框及其布局。
我的来源是这个答案Android文档
希望我有所帮助 :)

-2
你可以在小部件单击时启动AlertDialog更新: 为onclick侦听器添加以下代码。
    AlertDialog.Builder dialog = new AlertDialog.Builder(context);
    dialog.setMessage("Message");
    dialog.show();

我正在尝试,但是失败了,你有代码或示例链接吗?谢谢。我一直在尝试使用在AppWidgetProvideronUpdate方法中设置的挂起意图,如果我的点击有某种效果,我已经准备好基本的AlertDialog - Timbermar
请检查更新的答案。您可以根据自己的要求进行修改。 - Tushar Vengurlekar
android.view.WindowManager$BadTokenException: 无法添加窗口--令牌null不是应用程序的令牌。所以不行。被投票否决了。 - machei

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接