2013-04-16 21 views
5

Ben koduNiyet hep boş onStartCommand

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    if(intent != null) { 
     Log.i("INTENT", intent.getAction().toString()); 
    } 
    return START_STICKY; 
} 

şu var ama her zaman hat üzerinde NullPointerException verir:

Log.i("INTENT", intent.getAction().toString()); 

Neden? "Niyet" değişkeni null değilse, yukarıda kontrol ediyorum. Bu durumda aşağıdaki kod yürütür. Ama hala nullpointerexception var.

Servis böyle faaliyetinden başlatılır: Neyi yanlış yapıyorum

startService(new Intent(this, MainService.class)); 

?

+0

Muhtemelen getAction() null döndürür. Bir String içinde kontrol etmeyi deneyin. 'String s = intent.getAction(). ToString();' gibi bir şey ve null olup olmadığını kontrol edin. – Wamasa

+0

Ayrıca bu hizmeti başlatan yayınım var ve yayınla başladığım hizmet veya hizmette başlatılan hizmet arasında ayrım yapmak istiyorum. –

+0

@Wamasa Denedim. Hala nullpointerexception döndürür. GetAction() öğesini kaldırırsam, hizmet başlatılır. Wtf? –

cevap

12

intent.getAction()null döndüğünden NullPointerException alıyorsunuz.

Bu şekilde onay uzatmak olmalıdır:

if(intent != null && intent.getAction() != null) { 

Eğer setAction() çağırmanız gerekir senin niyetine bir Eylem eklemek isterseniz:

Intent i = new Intent(this, MainService.class); 
i.setAction("foo"); 
startService(i); 
+0

Adamın. İşe yarıyor. "If" kontrolümü uzatmam gerekiyordu. –