在Android中的应用小部件中更新意图中的附加内容

时间:2010-12-15 10:52:06

标签: android android-intent android-appwidget

我的代码:

@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开发的新手。任何帮助,将不胜感激。感谢

2 个答案:

答案 0 :(得分:1)

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

PendingIntent actionPendingIntent = 
     PendingIntent.getBroadcast(context, 0, active, PendingIntent.FLAG_UPDATE_CURRENT);

答案 1 :(得分:0)

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

你也用“com.anirudha.android.appwidget.Number”编写它,但是用“Number”读取。这必须与写作和阅读相同。

解决方案:使用getIntExtra()