2013-04-16 16 views
5

मैं कोडआशय हमेशा अशक्त onStartCommand

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

निम्नलिखित है लेकिन यह हमेशा लाइन पर NullPointerException रिटर्न:

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

क्यों? मैं उपरोक्त जांच कर रहा हूं यदि "इरादा" चर शून्य नहीं है। यदि कोड के बाद यह मामला निष्पादित है। लेकिन मुझे अभी भी nullpointerexception मिला है।

सेवा इस तरह की गतिविधि से शुरू कर दिया गया है:

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

क्या मैं गलत कर रहा हूँ?

+0

शायद getAction() अशक्त रिटर्न: यदि आप अपने इरादे आप setAction() कॉल करने की आवश्यकता के लिए एक कार्रवाई जोड़ना चाहते हैं

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

:

आप इस अपने चेक का विस्तार करना चाहिए। इसे स्ट्रिंग में जांचने का प्रयास करें। कुछ 'स्ट्रिंग एस = intent.getAction()। ToString();' की तरह कुछ और जांचें कि क्या यह शून्य है या नहीं। – Wamasa

+0

क्योंकि मेरे पास प्रसारण भी है जो इस सेवा को शुरू करता है, और मैं प्रसारण के साथ शुरू की गई गतिविधि या सेवा में शुरू की गई सेवा के बीच अंतर करना चाहता हूं। –

+0

@ वामासा मैंने कोशिश की। यह अभी भी nullpointerexception देता है। अगर मैं getAction() को हटा देता हूं, तो सेवा ठीक शुरू हो जाती है। Wtf? –

उत्तर

12

आपको NullPointerException मिल रहा है क्योंकि intent.getAction()null वापस लौट रहा है।

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

आपका आदमी। यह काम कर रहा है। मुझे अपनी "अगर" जांच बढ़ाने की जरूरत है। –

संबंधित मुद्दे