Android小部件PendingEvent捆绑包返回null

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

我正在尝试为我的应用程序实现一个小部件,但我的Pending帐篷包有一个问题

我的小部件有两个按钮,如果按下一个按钮,小部件将更新其内容。 但是如果我不能在
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你是想添加一个(正式)答案以便被接受吗?