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; 
}

我的应用程序中的服务调用 this 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 失败,因为 Activity 的上下文未初始化。您需要使用您的服务的上下文。使用以下功能。将此函数复制到您自己的服务中。

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 的两个点

于 2012-08-17T07:23:30.313 回答