Java 我的代码有什么问题?我似乎有局部/全局变量问题。请帮帮我

Java 我的代码有什么问题?我似乎有局部/全局变量问题。请帮帮我,java,android,Java,Android,这是我的代码(为了节省文章空间,我删除了导入声明): 我试图调用从用户电话的联系人屏幕中选择的号码,但由于变量telAdded是在onActivityForResult()方法中声明的,因此我无法在call方法中使用它。如何使telAdded方法在作用域中是全局的,以便在类中的任何地方都可以使用它?我甚至把它变成了一个字段变量,但运气不好。当我尝试按下呼叫按钮时,我选择了一个联系人,我的应用程序就崩溃了 LogCat错误: 12-26 15:47:52.420: I/Value of telAd

这是我的代码(为了节省文章空间,我删除了导入声明):

我试图调用从用户电话的联系人屏幕中选择的号码,但由于变量telAdded是在onActivityForResult()方法中声明的,因此我无法在call方法中使用它。如何使telAdded方法在作用域中是全局的,以便在类中的任何地方都可以使用它?我甚至把它变成了一个字段变量,但运气不好。当我尝试按下呼叫按钮时,我选择了一个联系人,我的应用程序就崩溃了

LogCat错误:

12-26 15:47:52.420: I/Value of telAdded(23307): tel:7043809866
12-26 15:47:53.541: W/dalvikvm(23307): threadid=1: thread exiting with uncaught exception (group=0x41849e00)
12-26 15:47:53.551: E/AndroidRuntime(23307): FATAL EXCEPTION: main
12-26 15:47:53.551: E/AndroidRuntime(23307): Process: com.example.callnumber, PID: 23307
12-26 15:47:53.551: E/AndroidRuntime(23307): java.lang.IllegalStateException: Could not execute method of the activity
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.view.View$1.onClick(View.java:3856)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.view.View.performClick(View.java:4466)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.view.View$PerformClick.run(View.java:18634)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.os.Handler.handleCallback(Handler.java:733)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.os.Handler.dispatchMessage(Handler.java:95)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.os.Looper.loop(Looper.java:158)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.app.ActivityThread.main(ActivityThread.java:5851)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at java.lang.reflect.Method.invokeNative(Native Method)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at java.lang.reflect.Method.invoke(Method.java:515)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1067)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:883)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at dalvik.system.NativeStart.main(Native Method)
12-26 15:47:53.551: E/AndroidRuntime(23307): Caused by: java.lang.reflect.InvocationTargetException
12-26 15:47:53.551: E/AndroidRuntime(23307):    at java.lang.reflect.Method.invokeNative(Native Method)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at java.lang.reflect.Method.invoke(Method.java:515)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.view.View$1.onClick(View.java:3851)
12-26 15:47:53.551: E/AndroidRuntime(23307):    ... 11 more
12-26 15:47:53.551: E/AndroidRuntime(23307): Caused by: java.lang.NullPointerException: println needs a message
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.util.Log.println_native(Native Method)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at android.util.Log.i(Log.java:160)
12-26 15:47:53.551: E/AndroidRuntime(23307):    at com.example.callnumber.MainActivity.Call(MainActivity.java:76)
12-26 15:47:53.551: E/AndroidRuntime(23307):    ... 14 more

onActivityResult
中设置
telAdded
时,需要省去该类型。否则,您将声明一个隐藏类字段的局部变量:

telAdded = "tel:" + number;

onActivityResult
中设置
telAdded
时,需要省去该类型。否则,您将声明一个隐藏类字段的局部变量:

telAdded = "tel:" + number;

请将您的代码简化为一个最小的示例。@OliCharlesworth我已经尽可能地简化了它。你能帮帮我吗?我们能从logcat那里得到一份坠机日志吗?当然可以。我在上面。@user3131263:我估计上面90%的代码与当前问题无关。我会剔除所有与在方法中重新声明变量这一事实不直接相关的内容,或者其他任何内容。请将代码简化为一个最小的示例。@OliCharlesworth我已经尽可能地简化了它。你能帮帮我吗?我们能从logcat那里得到一份坠机日志吗?当然可以。我在上面。@user3131263:我估计上面90%的代码与当前问题无关。我会剔除所有与在方法中重新声明变量这一事实不直接相关的内容,或者其他任何内容。天哪,非常感谢!!!!我已经在这个错误上摸索了3天,当时我所要做的就是删除一个步骤。非常感谢你,亨利!!您能给我解释一下添加类型是如何使其成为局部变量的吗?
type var=val
是带有初始值设定项的变量声明,
var=val
是根据Java语法的赋值。我明白了。非常感谢你的解释。你这个摇滚人,你真的让我开心!顺便说一句,我给了你一张支票。天哪,非常感谢你!!!!我已经在这个错误上摸索了3天,当时我所要做的就是删除一个步骤。非常感谢你,亨利!!您能给我解释一下添加类型是如何使其成为局部变量的吗?
type var=val
是带有初始值设定项的变量声明,
var=val
是根据Java语法的赋值。我明白了。非常感谢你的解释。你这个摇滚人,你真的让我开心!顺便说一句,我给了你一张支票。