我的代码出了什么问题?我似乎有本地/全局变量问题.请帮我

use*_*263 0 java android

这是我的代码(我删除了我的导入声明以节省帖子中的空间):

public class MainActivity extends Activity {

    private static final int PICK_CONTACT_REQUEST = 1; // The request code
    Uri numToCall;
    String telAdded;

    public void Call(View view) {

        if (checkBox.isChecked()) {
            Uri numToCall = Uri.parse(telAdded);
            Intent callIntent = new Intent(Intent.ACTION_CALL, numToCall);
            startActivity(callIntent);
        } else {
            Uri numToCall = Uri.parse(telAdded);
            Intent callIntent = new Intent(Intent.ACTION_CALL, numToCall);
            startActivity(callIntent);
        }

    }

    public void openContacts(View view) {
        Intent pickContactIntent = new Intent(Intent.ACTION_PICK,
                Uri.parse("content://contacts"));
        pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only
                                                        // contacts w/ phone
                                                        // numbers
        startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (data != null) {
            Uri uri = data.getData();

            if (uri != null) {
                Cursor c = null;
                try {
                    c = getContentResolver()
                            .query(uri,
                                    new String[] {
                                            ContactsContract.CommonDataKinds.Phone.NUMBER,
                                            ContactsContract.CommonDataKinds.Phone.TYPE },
                                    null, null, null);

                    if (c != null && c.moveToFirst()) {
                        String number = c.getString(0);
                        int type = c.getInt(1);
                        showSelectedNumber(type, number);
                        String telAdded = "tel:" + number;
                        Log.i("Value of telAdded", telAdded);

                    }
                } finally {
                    if (c != null) {
                        c.close();
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图调用从用户手机上的"联系人"屏幕中选择的数字,但由于变量telAdded是在onActivityForResult()方法中声明的,因此我无法在调用方法中使用它.如何使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
Run Code Online (Sandbox Code Playgroud)

Hen*_*nry 5

当你telAdded进入时,onActivityResult你需要省略类型.否则,您声明一个隐藏类字段的局部变量:

telAdded = "tel:" + number;
Run Code Online (Sandbox Code Playgroud)