2010-07-24 5 views
2

J'essaie de lancer un service depuis un autre service avec certains extras. Cependant, je ne peux pas récupérer ces extras dans le service lancé, .getIntExtra renvoie une exception NullPointerException.

Je ne parviens pas à extraire des extras d'intention dans Service onStart()

Voilà comment je lance service:

Intent serviceIntent = new Intent(context, RefreshService.class); 
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 

PendingIntent contentIntent = PendingIntent.getService(this, 0, serviceIntent, 0); 
updateViews.setOnClickPendingIntent(R.id.btnRefresh, contentIntent); 


Et ce que je suis en train de recevoir les extras du service a commencé:

@Override  
public void onStart(Intent intent, int startId){ 
    super.onStart(intent, startId); 
    mAppWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1); 
} 

Dans mon exemple, mAppWidgetId utilise toujours la valeur par défaut e -1.

Qu'est-ce que je fais mal?


Merci pour votre aide,

Nick

Répondre

1

I "résolu" en transmettant mes valeurs personnalisées par .setAction et .setFlags au lieu de .putExtras, qui fonctionne très bien . Je peux les récupérer avec .getAction et .getFlags

0
+0

Merci pour votre réponse, mais dans mon cas, aucun supplément n'est (apparemment) passé au service démarré, il ne s'agit pas de savoir lequel est le plus récent. J'ai essayé d'ajouter le FLAG_UPDATE_CURRENT, mais cela n'aide pas: -/ – Nick

+0

En fait, attendez, ce sont deux instructions contradictoires - au début, vous dites que getIntExtra lance un NPE (indiquant que l'intention est nulle), mais vous dites qu'il renvoie -1 (indiquant que le surplus n'existe pas, ou que vous passez réellement -1 - avez-vous vérifié que vous passez la bonne valeur?). – EboMike

+0

Si vous regardez la ligne 4 du deuxième bloc de code: getIntExtra résout à "-1", comme cela a été spécifié comme valeur par défaut (dans le cas où l'intention supplémentaire n'existe pas). Si je demandais l'extra sans spécifier une valeur par défaut, j'obtiendrais un NPE. – Nick

Questions connexes