5

Android アプリ ウィジェットとウィジェットのボタンがあります。更新期間を 30 分に設定しましたが、ボタンに触れるたびにウィジェットも更新したいと考えています。ここに私のコードがあります:

        RemoteViews remoteV = new RemoteViews(context.getPackageName(), R.layout.widgetmenu);

        Intent intentSync = new Intent(context, MessMenuWidgetProvider.class);
        PendingIntent pendingSync = PendingIntent.getBroadcast(context,0, intentSync,0);
        remoteV.setOnClickPendingIntent(R.id.imageButtonSync,pendingSync);

        appWidgetManager.updateAppWidget(awID, remoteV);

更新時間を 30 分に設定したので、30 分ごとに関数 onUpdate() が呼び出されます。私が達成したいのは、ボタンを使用して onUpdate() を手動で呼び出すことです。しかし、それは起こっていません。何か助けはありますか?

4

4 に答える 4

6
RemoteViews remoteV = new RemoteViews(context.getPackageName(), R.layout.widgetmenu);

Intent intentSync = new Intent(context, MessMenuWidgetProvider.class);
intentSync.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE); 
PendingIntent pendingSync = PendingIntent.getBroadcast(context,0, intentSync, PendingIntent.FLAG_UPDATE_CURRENT); 
remoteV.setOnClickPendingIntent(R.id.imageButtonSync,pendingSync);

appWidgetManager.updateAppWidget(awID, remoteV);

onReceive(); を呼び出します。onReceive() メソッドに以下を追加して、onUpdate を手動で呼び出します。

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    super.onReceive(context, intent);

    Bundle extras = intent.getExtras();
       if(extras!=null) {
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
        ComponentName thisAppWidget = new ComponentName(context.getPackageName(), MessMenuWidgetProvider.class.getName());
        int[] appWidgetIds = appWidgetManager.getAppWidgetIds(thisAppWidget);

        onUpdate(context, appWidgetManager, appWidgetIds);
       }
}
于 2014-10-26T07:13:17.860 に答える
5

MessMenuWidgetProviderAppWidgetProviderサブクラスの場合、 ではなく、PendingIntentそれでトリガーされます。を呼び出して を指定し、 1 つの引数でアプリ ウィジェットの ID をエクストラに入力する必要があります。つまり、 でトリガーするために使用する構造と同じになるようにを設定する必要があります。onReceive()onUpdate()setAction()IntentACTION_APPWIDGET_UPDATEEXTRA_APPWIDGET_IDSint[]IntentIntentAppWidgetManageronUpdate()AppWidgetProvider

于 2014-10-25T21:21:51.077 に答える