0

現在プロジェクトに取り組んでいますが、問題が発生しています。

になるとアプリがクラッシュしSearchDic()ます。

これが私のコードです:

public int SearchDic(final CharSequence received) {
    Handler mHandler = new Handler();
    mHandler.postDelayed(new Runnable() {
    @Override
    public void run(){
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.endic.naver.com/search.nhn?query=" + received + "&searchOption=entryIdiom&preQuery=&forceRedirect="));
        startActivity(browserIntent);
    }}, 10);
return 0; 
}

私のアプリのサービスはこれSearchDic()を呼び出すので、私は非静的な方法を使用しました...など

// Local Variable Received 
MainActivity a = new MainActivity();
a.SearchDic(Received);

Logcatを試しましたが、startActivity()パーツでクラッシュし続け、エラーメッセージが表示されjava.lang.NullPointerExceptionました。

これが私のLogcatエラーです:

08-17 16:16:10.364: D/AndroidRuntime(19322): Shutting down VM
08-17 16:16:10.364: W/dalvikvm(19322): threadid=1: thread exiting with uncaught exception (group=0x40c7c1f8)
08-17 16:16:10.369: E/AndroidRuntime(19322): FATAL EXCEPTION: main
08-17 16:16:10.369: E/AndroidRuntime(19322): java.lang.NullPointerException
08-17 16:16:10.369: E/AndroidRuntime(19322):    at android.app.Activity.startActivityForResult(Activity.java:3252)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at android.app.Activity.startActivity(Activity.java:3359)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at com.wjuni.easydic.MainActivity$1.run(MainActivity.java:80)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at android.os.Handler.handleCallback(Handler.java:605)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at android.os.Handler.dispatchMessage(Handler.java:92)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at android.os.Looper.loop(Looper.java:137)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at android.app.ActivityThread.main(ActivityThread.java:4514)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at java.lang.reflect.Method.invokeNative(Native Method)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at java.lang.reflect.Method.invoke(Method.java:511)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
08-17 16:16:10.369: E/AndroidRuntime(19322):    at dalvik.system.NativeStart.main(Native Method)

アプリケーションの何が問題になっていますか?また、この関数をどのように呼び出す必要がありますか?私を助けてください。

ありがとう。

4

2 に答える 2

0

@jensが指摘したように、MainActivityを自分で初期化するべきではありません。アクティビティのコンテキストが初期化されていないため、StartActivityが失敗しています。サービスのコンテキストを使用する必要があります。以下の関数を使用します。この関数を独自のサービスにコピーします。

public int SearchDic(final CharSequence received, final Context context) {
    Handler mHandler = new Handler();
    mHandler.postDelayed(new Runnable() {
    @Override
    public void run(){
        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.endic.naver.com/search.nhn?query=" + received + "&searchOption=entryIdiom&preQuery=&forceRedirect="));
        context.startActivity(browserIntent);
    }}, 10);
return 0; 
}
于 2012-08-17T07:39:57.370 に答える
0

browserIntentがnullになる可能性があると思います。そうでない場合、受信されるのはnullだけであり、nullが初期化される可能性のある2つのポイントがスローされます。

于 2012-08-17T07:23:30.313 に答える