Java 单击按钮时未调用Android AppWidgetProvider onReceive
我有一个在android下运行的小部件,我希望当用户点击小部件上的按钮时,它会自动更新 由于某些原因,在我安装小部件后单击按钮时,永远不会调用onReceive方法 在我的AppWidgetProvider类中有一个类似于这样的onUpdate方法:Java 单击按钮时未调用Android AppWidgetProvider onReceive,java,android,android-widget,android-appwidget,Java,Android,Android Widget,Android Appwidget,我有一个在android下运行的小部件,我希望当用户点击小部件上的按钮时,它会自动更新 由于某些原因,在我安装小部件后单击按钮时,永远不会调用onReceive方法 在我的AppWidgetProvider类中有一个类似于这样的onUpdate方法: @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i = 0; i < appWidgetIds.length; ++i) {
final RemoteViews rv =
new RemoteViews(context.getPackageName(), R.layout.appwidget_provider);
final Intent nextIntent =
new Intent(context, TestAppWidgetProvider.class);
nextIntent.setAction(TestAppWidgetProvider.NEXT_ACTION);
nextIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
final PendingIntent refreshPendingIntent =
PendingIntent.getBroadcast(context, 0,
nextIntent, PendingIntent.FLAG_UPDATE_CURRENT);
rv.setOnClickPendingIntent(R.id.next, refreshPendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds[i], rv);
}
}
我的清单文件中也有:
<receiver android:name="com.test.android.widget.TestAppWidgetProvider" >
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter >
<action android:name="com.test.android.widget.PREV" />
</intent-filter>
<intent-filter >
<action android:name="com.test.android.widget.NEXT" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appwidget_info" />
</receiver>
在我安装小部件并单击下一步按钮后,onReceive方法由于某种原因从未被调用…修复了它,结果证明它是微不足道的 这是因为在创建小部件时甚至没有调用onReceive,所以没有设置事件侦听器
将onReceive中的一些代码(设置SetOnClickPendingContent等)添加到一个函数中,该函数在小部件配置活动准备好更新小部件时调用。您能分享您的解决方案吗?
<receiver android:name="com.test.android.widget.TestAppWidgetProvider" >
<intent-filter >
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter >
<action android:name="com.test.android.widget.PREV" />
</intent-filter>
<intent-filter >
<action android:name="com.test.android.widget.NEXT" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/appwidget_info" />
</receiver>