这是我的代码(我删除了我的导入声明以节省帖子中的空间):
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)
当你telAdded进入时,onActivityResult你需要省略类型.否则,您声明一个隐藏类字段的局部变量:
telAdded = "tel:" + number;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |