3

我的代码:

@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);
 }

所以,基本上我想改变我应该通过 Intent 收到的额外内容。但是每当按下按钮时,我都会收到与 Intent 相同的值。我是android开发的新手。任何帮助,将不胜感激。谢谢

4

2 回答 2

1

如果要更新现有的待处理意图,则必须在创建时使用 FLAG_UPDATE_CURRENT 标志。

PendingIntent actionPendingIntent = 
     PendingIntent.getBroadcast(context, 0, active, PendingIntent.FLAG_UPDATE_CURRENT);
于 2015-03-08T09:17:54.313 回答
0

currentNumber 是什么类型?它没有显示,但从代码中我猜它是一个 int。您将其作为 int 放入 extra 中,但您将其作为字符串读出。该字符串将始终为空,因为没有具有该名称的额外字符串,因此 currentnumber 也将为 0,然后增加 1,因此始终为 1。

你也用“com.anirudha.android.appwidget.Number”写它,但用“Number”读。这必须是写和读的同一个键。

解决方案:使用 getIntExtra()

于 2011-09-05T10:38:27.697 回答