我想为我的整个小部件布局设置一个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);
答案 0 :(得分:1)
目前我正在为布局中的每个视图设置一个意图,这使我的代码非常混乱
然而,这是你唯一的选择。您必须为每个要通过单击控制的小部件调用setOnClickPendingIntent()
。
欢迎您使用循环,将您的窗口小部件ID放入数组并迭代该数组,在每次传递中调用setOnClickPendingIntent()
。
答案 1 :(得分: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);
[...]
答案 2 :(得分:0)
我对此问题的解决方案(比原始问题晚了几年)是为主版式设置ID。所以我的布局有一个RelativeLayout,并且有一个ID,我可以将其用于待处理的意图。