Обновление дополнений в намерениях в виджете приложения в Android - PullRequest
3 голосов
/ 15 декабря 2010

Мой код:

@Override
 public void onUpdate(Context context, AppWidgetManager appWidgetManager,
   int[] appWidgetIds) {
  Intent active = new Intent(context, DialerWidget.class);
  active.setAction(ACTION_WIDGET_RECEIVER);
  active.putExtra("com.anirudha.android.appwidget.Number", currentNumber);
  PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context,
    0, active, 0);
  views.setOnClickPendingIntent(R.id.one,
    actionPendingIntent);
  views.setTextViewText(R.id.number, currentNumber);
  appWidgetManager.updateAppWidget(appWidgetIds, views);
 }

        @Override
        public void onReceive(Context context, Intent intent) {
  if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
   currentNumber = intent.getStringExtra("Number");
   currentNumber += "1";  
   Intent active = new Intent(context, DialerWidget.class);
   active.setAction(ACTION_WIDGET_RECEIVER);
   active.putExtra("com.anirudha.android.appwidget.Number", CurrentNumber);
   active.putExtra("com.anirudha.android.appwidget.Key", "1");
   PendingIntent actionPendingIntent = PendingIntent.getBroadcast(context,
      0, active, 0);
   views.setOnClickPendingIntent(R.id.one,
      actionPendingIntent);

   views.setTextViewText(R.id.number, currentNumber);
   ComponentName cn = new ComponentName(context.getPackageName(),
      DialerWidget.class.getName());
   AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
   appWidgetManager.updateAppWidget(cn, views);

   Toast.makeText(context, currentNumber, Toast.LENGTH_SHORT).show();   
  }
   super.onReceive(context, intent);
 }

Итак, в основном я хочу изменить дополнения, которые я должен получить с намерением. Но всякий раз, когда нажимается кнопка, я получаю одно и то же значение с намерением. Я новичок в разработке Android. Любая помощь будет оценена. Спасибо

Ответы [ 2 ]

1 голос
/ 08 марта 2015

Если вы хотите обновить существующее ожидающее намерение, вы должны использовать флаг FLAG_UPDATE_CURRENT при его создании.

PendingIntent actionPendingIntent = 
     PendingIntent.getBroadcast(context, 0, active, PendingIntent.FLAG_UPDATE_CURRENT);
0 голосов
/ 05 сентября 2011

Какой тип является currentNumber?Это не показано, но из кода я думаю, что это int.Вы помещаете это в дополнительный как int, но вы читаете это как строку.Строка всегда будет пустой, поскольку нет строки с этим именем, поэтому currentnumber также будет 0, затем увеличен на 1, поэтому всегда будет 1.

Также вы пишете это с помощью com.anirudha.android.appwidget.Number ", но читается с" Number ".Это должен быть один и тот же ключ для записи и чтения.

Решение: используйте getIntExtra ()

...