在startActivity()期间发生java.lang.NullPointerException

时间:2012-08-17 07:06:49

标签: java android

我正在处理我的项目,我遇到了问题。

我的应用程序崩溃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)

我的应用程序有什么问题,我该如何调用此函数?请帮帮我。

感谢。

2 个答案:

答案 0 :(得分:0)

我认为browserIntent可能为null,否则只接收为null,即可以初始抛出null的两个点

答案 1 :(得分:0)

正如@jens指出的那样,你不应该自己初始化MainActivity。 由于未初始化Activity的上下文,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; 
}