私が開始しようとしているIntentServiceがあります。私がやるときは、これを吐く:IntentServiceを開始するNULLポインター例外
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
私はこれをGoogleで検索し、私は見つけることができる限り多くの同様のStackOverflowの質問を見てきました。しかし、私の周りを包み込むことができない微妙な違いがいくつかあります。まず第一に、例外に参照されるクラスはありません。第2に、文脈を変更するか、またはヌルでないことを確認するために二重チェックを行うことによって同様の質問が修正されました。
私はそれをチェックするためのコードを持っているケースではありません。
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は、Googleドキュメントの後にモデル化されています。 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...
}
だから私の質問はこれです:はどここの例外がから来ていると私はそれを避けるために、異なる行うことができるものがありますか?私のgoogle-fuは過去に私を失敗させていないので、うまくいけば、これは痛いほど明白な答えの一つではありません。また、より良いやり方ができたり、まったく醜いことがあるとすれば、建設的な批判は常に高く評価されます。
私は何かを残した場合に備えて、pasteAnbotにNewsActivityとNewsServiceを完全に入れました。 http://pastebin.com/mR9Sykrq
通常、アクティビティでこれを忘れてしまった場合、クラッシュすると思い出されますが、明らかにここには表示されません。 –
@Jarett Androidの多くの不思議のただ一つの例=] –
ありがとう、それは私のために働く。 – mxi1