Android小部件PendingEvent捆绑包返回null
我正在尝试为我的应用程序实现一个小部件,但我的Pending帐篷包有一个问题 我的小部件有两个按钮,如果按下一个按钮,小部件将更新其内容。 但是如果我不能在Android小部件PendingEvent捆绑包返回null,android,null,widget,bundle,android-pendingintent,Android,Null,Widget,Bundle,Android Pendingintent,我正在尝试为我的应用程序实现一个小部件,但我的Pending帐篷包有一个问题 我的小部件有两个按钮,如果按下一个按钮,小部件将更新其内容。 但是如果我不能在onReceive方法中更新小部件,因为包总是null。有什么想法吗 public class StudyWidgetProvider extends AppWidgetProvider { private static String LOG_TAG = StudyWidgetProvider.class.toString(); priva
onReceive
方法中更新小部件,因为包总是null
。有什么想法吗
public class StudyWidgetProvider extends AppWidgetProvider {
private static String LOG_TAG = StudyWidgetProvider.class.toString();
private static String BUTTON_BACK = "BUTTON_BACK";
private static String BUTTON_FORWARD = "BUTTON_FORWARD";
private Calendar currentDate = Calendar.getInstance();
private RemoteViews widget;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for(int i=0; i<appWidgetIds.length; i++){
Log.i(LOG_TAG, "Update Widget");
Intent intent = new Intent(context, WidgetService.class);
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
widget = new RemoteViews(context.getPackageName(), R.layout.widget);
SimpleDateFormat dateFormater = new SimpleDateFormat("EEEE");
widget.setTextViewText(R.id.widget_day, dateFormater.format(currentDate.getTime()));
dateFormater = new SimpleDateFormat("dd.MM.yyyy");
widget.setTextViewText(R.id.widget_date, dateFormater.format(currentDate.getTime()));
//Button-Actions
Intent backIntent = new Intent(context, StudyWidgetProvider.class);
backIntent.setAction(BUTTON_BACK);
Intent forwardIntent = new Intent(context, StudyWidgetProvider.class);
forwardIntent.setAction(BUTTON_FORWARD);
PendingIntent backPendingIntent = PendingIntent.getBroadcast(context, 0, backIntent, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent forwardPendingIntent = PendingIntent.getBroadcast(context, 0, forwardIntent, PendingIntent.FLAG_UPDATE_CURRENT);
widget.setOnClickPendingIntent(R.id.widget_but_back, backPendingIntent);
widget.setOnClickPendingIntent(R.id.widget_but_forward, forwardPendingIntent);
widget.setRemoteAdapter(appWidgetIds[i], R.id.words, intent);
appWidgetManager.updateAppWidget(appWidgetIds[i], widget);
}
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
String action = intent.getAction();
if(action.equals(BUTTON_BACK)){
Log.i(LOG_TAG, "Pressed back");
currentDate.set(Calendar.DATE, -1);
}
if(action.equals(BUTTON_FORWARD)){
Log.i(LOG_TAG, "Pressed forward");
currentDate.set(Calendar.DATE, 1);
}
Bundle extras = intent.getExtras();
if(extras != null){
Log.i(LOG_TAG, "Bundle not null");
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName thisAppWidget = new ComponentName(context.getPackageName(), StudyWidgetProvider.class.getName());
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);
onUpdate(context, appWidgetManager, appWidgetIds);
}
}
}
公共类StudyWidgetProvider扩展了AppWidgetProvider{
私有静态字符串LOG_TAG=StudyWidgetProvider.class.toString();
私有静态字符串BUTTON\u BACK=“BUTTON\u BACK”;
私有静态字符串BUTTON\u FORWARD=“BUTTON\u FORWARD”;
private Calendar currentDate=Calendar.getInstance();
私有远程视图小部件;
@凌驾
公共void onUpdate(上下文上下文,AppWidgetManager AppWidgetManager,int[]AppWidgetId){
对于(int i=0;i你没有在意向书中添加任何额外内容,那么你为什么希望在意向书中添加任何额外内容?你没有在意向书中添加任何额外内容,那么你为什么希望在意向书中添加任何内容?你是对的。谢谢你的帮助!@DavidWasser你是想添加一个(正式)答案以便被接受吗?