मुझे एक इरादा सेवा मिली है जिसे मैं शुरू करने की कोशिश कर रहा हूं। जब मैं करते हैं, इसे बाहर थूक इस:शून्य सूचक अपवाद प्रारंभिक सेवा
java.lang.RuntimeException: Unable to start service [email protected] with Intent { cmp=com.pec.testapp/.service.NewsService }: java.lang.NullPointerException
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2173)
... (omitted for brevity)
Caused by: java.lang.NullPointerException
at android.app.IntentService.onStart(IntentService.java:110)
at android.app.IntentService.onStartCommand(IntentService.java:118)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2160)
... 10 more
मैं इस googled और के रूप में इसी तरह के कई StackOverflow सवाल को देखा के रूप में मैं मिल सकता है। हालांकि, कुछ सूक्ष्म अंतर हैं जो मैं अपने सिर को चारों ओर लपेट नहीं सकता। सबसे पहले, अपवाद में संदर्भित मेरी कोई भी कक्षा नहीं है। दूसरा, यह सुनिश्चित करने के लिए कि यह शून्य नहीं है, संदर्भ या दोहरी जांच को बदलकर समान प्रश्न तय किए गए हैं।
मैं कोड है कि ऐसा नहीं है की जाँच करने के लिए है:
public Context context;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
context = getApplicationContext();
if(context == null)
Log.d("PECAPP","Context is null");
setContentView(R.layout.news_layout);
...Omit button code...
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View view){
Intent i = new Intent(context, NewsService.class); // also tried NewsActivity.this
if(i != null) // I know that this should never happen but I'm at a loss...
startService(i); // I've also tried this with context.startService(i)
}
});
}
मेरे IntentService गूगल डॉक्स के बाद मॉडलिंग की है। बस एक हैंडलइन्टेंट विधि के साथ एक कन्स्ट्रक्टर।
public NewsService() {
super("NewsService");
}
...omit onCreate() and onDestroy() since they haven't been implemented yet...
@Override
protected void onHandleIntent(Intent intent) throws IllegalArgumentException {
Log.d("PECAPP","Got here..."); // I never actually got here...
if(intent == null) Log.d("PECAPP","INTENT IS NULL");
...omit rest of code...
}
तो मेरे सवाल यह है: कहाँ इस अपवाद से आ रही है और वहाँ कुछ मैं इसे से बचने के लिए अलग कर सकते हैं? मेरे google-fu ने मुझे अतीत में विफल नहीं किया है, इसलिए उम्मीद है कि यह उन दर्दनाक स्पष्ट उत्तरों में से एक नहीं है। इसके अलावा, अगर ऐसी चीजें हैं जिन्हें बेहतर किया जा सकता है या केवल सादे बदसूरत हैं, रचनात्मक आलोचना हमेशा सराहना की जाती है।
मैंने कुछ छोड़ दिया, तो मैंने पेस्टबिन पर पूर्ण अपवाद, न्यूजएक्टिविटी और न्यूज सर्विस को रखा। http://pastebin.com/mR9Sykrq
आमतौर पर यदि आप इसे भूल जाते हैं, तो कहें, एक गतिविधि, यह आपको क्रैश होने पर याद दिलाएगी, लेकिन स्पष्ट रूप से यहां नहीं। –
@ जेरेट एंड्रॉइड के कई आश्चर्यों का एक उदाहरण =] –
धन्यवाद, और यह मेरे लिए काम करता है। – mxi1