Tôi đã có một IntentService mà tôi đang cố gắng để bắt đầu. Khi tôi làm, nó spits ra này:Null Trỏ ngoại lệ bắt đầu IntentService
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
Tôi có googled này và nhìn vào càng nhiều câu hỏi StackOverflow tương tự như tôi có thể tìm thấy. Tuy nhiên, có một vài sự khác biệt tinh tế mà tôi không thể quấn quanh đầu. Trước hết, không có bất kỳ lớp học nào của tôi được tham chiếu trong ngoại lệ. Thứ hai, các câu hỏi tương tự đã được sửa bằng cách thay đổi ngữ cảnh hoặc kiểm tra lại để đảm bảo nó không phải là rỗng.
tôi có mã để kiểm tra đó không phải là trường hợp:
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 My được mô hình hóa sau khi các tài liệu google. Đơn giản chỉ là một hàm tạo với một phương thức onHandleIntent.
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...
}
Vì vậy, câu hỏi của tôi là thế này: đâu ngoại lệ này đến từ đâu và có gì đó tôi có thể làm khác nhau để tránh nó? Google-fu của tôi đã không thất bại trong quá khứ, vì vậy hy vọng đây không phải là một trong những câu trả lời rõ ràng đau đớn. Ngoài ra, nếu có những điều có thể được thực hiện tốt hơn hoặc chỉ đơn giản là xấu xí, những lời chỉ trích mang tính xây dựng luôn được đánh giá cao.
Tôi đặt ngoại lệ đầy đủ, NewsActivity và NewsService lên pastebin trong trường hợp tôi đã loại bỏ điều gì đó. http://pastebin.com/mR9Sykrq
Thông thường nếu bạn quên điều này trong, nói, một Hoạt động, nó sẽ nhắc bạn khi nó gặp sự cố, nhưng dường như không có ở đây. –
@ Jarett Chỉ cần một ví dụ về nhiều điều kỳ diệu của Android =] –
Cảm ơn, và nó hoạt động cho tôi. – mxi1