2010-12-15 102 views
3

Mon code:extras dans une intention dans l'application Widget dans Android

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

Donc, en gros je veux changer les extras que je devrais recevoir avec l'intention. Mais chaque fois que le bouton est pressé, je reçois la même valeur avec l'intention. Je suis nouveau pour le développement Android. Toute aide serait appréciée. Merci

Répondre

0

Quel type est currentNumber? Ce n'est pas montré mais du code je suppose que c'est un int. Vous le mettez dans l'extra comme un int, mais vous le lisez comme une chaîne. La chaîne sera toujours vide car il n'y a pas de chaîne supplémentaire avec ce nom donc le numéro actuel sera également 0, puis augmenté de 1, alors soyez toujours 1.

Aussi vous l'écrivez avec "com.anirudha.android.appwidget .Numéro "mais en lisant avec" Numéro ". Cela doit être la même clé pour l'écriture et la lecture.

Solution: utiliser getIntExtra()

1

Si vous souhaitez mettre à jour une intention dans l'attente existante, vous devez utiliser le drapeau FLAG_UPDATE_CURRENT lors de sa création.

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