0

我想setOnClickPendingIntent为我的整个小部件布局设置一个,但我还没有找到一种方法来做到这一点。我想这是一件非常微不足道的事情,但我忽略了它。目前我正在为布局中的每个视图设置一个意图,这使我的代码非常混乱。这是我目前正在做的事情:

remView = new RemoteViews(ctxContext.getPackageName(), R.layout.initial);
Intent ittRetry = new Intent(ctxContext, SettingsActivity.class);
ittRetry.setAction(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
ittRetry.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, intInstance);
PendingIntent pitRetry = PendingIntent.getBroadcast(ctxContext, 0, ittRetry, PendingIntent.FLAG_UPDATE_CURRENT);        
remView.setOnClickPendingIntent(R.id.widget_rows, pitRetry);
remView.setOnClickPendingIntent(R.id.widget_message, pitRetry);
wigManager.updateAppWidget(intInstance, remView);
4

3 回答 3

1

目前我正在为布局中的每个视图设置一个意图,这使我的代码非常混乱

但是,这是您唯一的选择。您必须通过单击来调用setOnClickPendingIntent()要控制的每个小部件。

欢迎您使用循环,将您的小部件 ID 放在一个数组中并迭代该数组,setOnClickPendingIntent()在每个通道中调用。

于 2013-10-27T11:30:24.897 回答
0

您可以在覆盖整个小部件的布局 xml 末尾处的所有小部件视图之上创建一个透明按钮(match_parent很重要!):

<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"/>

并在您的小部件代码中引用它:

[...]
views.setOnClickPendingIntent(R.id.button, pendingIntent);
[...]
于 2018-06-11T22:42:47.620 回答
0

我对这个问题的解决方案(在原始问题之后的几年)是为主布局设置一个 id。所以我的布局有一个RelativeLayout,它有一个id,我可以将它用于挂起的意图。

于 2019-04-09T14:12:35.127 回答