【问题标题】:How to add activity button in Android widget如何在 Android 小部件中添加活动按钮
【发布时间】:2014-08-19 17:47:31
【问题描述】:

这是我第一次需要为 android 创建一个 home 小部件。

我需要在widget_layout 中定义按钮来启动一些活动,因此我创建了一个扩展AppWidgetProvider 的类WidgetProvider 并在主页中显示小部件,但我注意到没有@987654324 @,所以我不明白如何将我的布局 xml 中的按钮与可以打开所需活动的侦听器准确链接。

市场上有很多具有这种按钮的小部件。

我该怎么办?

【问题讨论】:

    标签: android android-widget


    【解决方案1】:

    在小部件中,您必须使用RemoteViews 而不是View,并且没有findViewById(),因此也没有setOnClickListener()。但是,您可以使用remoteViews.setOnClickPendingIntent(id, pendingIntent)。这是使用它打开活动的最小方法:

    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        for (int i = 0; i < appWidgetIds.length; i++) {
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
            Intent appIntent = new Intent(context, MyActivity.class);
            appIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            PendingIntent appPendingIntent = PendingIntent.getActivity(context, REQUEST_CODE, appIntent, PendingIntent.FLAG_CANCEL_CURRENT);
            views.setOnClickPendingIntent(R.id.widget_button, appPendingIntent);
            appWidgetManager.updateAppWidget(appWidgetIds[i], views);
        }
        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }
    

    【讨论】:

    • 感谢您的回答,但无法解析REQUEST_CODE 究竟是什么,我该如何使用它?
    • REQUEST_CODE 可以是您想要的任何整数。它用于标识pendingIntent。例如,当您快速按下按钮多次并在有机会执行之前多次发送相同的 PendingIntent 时,它们被标识为相同的待处理意图,因为它们具有相同的请求代码(使用 PendingIntent.FLAGS 更改行为)。
    • 谢谢!如果可以的话,请看看我的另一个问题stackoverflow.com/questions/25397265/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 1970-01-01
    相关资源
    最近更新 更多