我的代码:
@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开发的新手。任何帮助,将不胜感激。感谢
答案 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()