2010-12-15 9 views
3

Mein Code:Aktualisierung Extras in der Absicht, in App Widget in 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); 
} 

Also, im Grunde mag ich die Extras ändern i mit der Absicht erhalten soll. Aber immer wenn die Taste gedrückt wird, erhalte ich den gleichen Wert mit der Absicht. Ich bin neu in der Android-Entwicklung. Jede Hilfe wäre willkommen. Danke

Antwort

0

Welcher Typ ist currentNumber? Es ist nicht gezeigt, aber aus dem Code, ich denke, es ist ein Int. Sie setzen es in das Extra als Int ein, aber Sie lesen es als String vor. Der String wird immer leer sein, da es keinen String extra mit diesem Namen gibt, so dass currentnumber auch 0 ist, dann um 1 erhöht, also immer 1.

Auch Sie schreiben es mit "com.anirudha.android.appwidget" .Number "aber lesen mit" Number ". Dies muss der gleiche Schlüssel zum Schreiben und Lesen sein.

Lösung: verwenden getIntExtra()

1

Wenn Sie eine bestehende anhängige Absicht aktualisieren möchten, müssen Sie die FLAG_UPDATE_CURRENT Flag verwenden, wenn Sie es schaffen.

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