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

だから、基本的に私はインテントで受け取るべきエクストラを変更したい. しかし、ボタンが押されるたびに、インテントで同じ値を受け取ります。私はアンドロイド開発が初めてです。どんな助けでも大歓迎です。ありがとう

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 として入れていますが、文字列として読み込んでいます。その名前の余分な文字列がないため、文字列は常に空になり、currentnumber も 0 になり、その後 1 増加するため、常に 1 になります。

また、「com.anirudha.android.appwidget.Number」で書いていますが、「Number」で読んでいます。これは、書き込みと読み取りで同じキーでなければなりません。

解決策: getIntExtra() を使用します

于 2011-09-05T10:38:27.697 に答える