大家好我是android的新手,我在我的Activity上推送一个ImageButton后尝试做一个调用,我在stackoverflow上的其他问题上找到了这个片段。
icotelefono.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//icotelefono.setVisibility(View.GONE);
String url = "tel:3348292536";
Intent intent_phone = new Intent(Intent.ACTION_CALL, Uri.parse(url));
startActivity(intent_phone);
}
});
但是当我点击按钮时,应用程序崩溃,我不知道为什么,因为当这个片段在MainActivity中扩展片段活动时一切顺利。但是当它在Activity中应该延伸Activity时应用程序崩溃。其他信息:我已经拥有清单中的权限。
[编辑] logcat的:
10-09 17:20:34.846: E/AndroidRuntime(4080): FATAL EXCEPTION: main
10-09 17:20:34.846: E/AndroidRuntime(4080): Process: com.example.findmyclients, PID: 4080
10-09 17:20:34.846: E/AndroidRuntime(4080): java.lang.NullPointerException
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.app.Activity.startActivityForResult(Activity.java:3532)
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.app.Activity.startActivityForResult(Activity.java:3493)
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.app.Activity.startActivity(Activity.java:3735)
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.app.Activity.startActivity(Activity.java:3703)
10-09 17:20:34.846: E/AndroidRuntime(4080): at com.example.findmyclients.Hide_Unhide$1.onClick(Hide_Unhide.java:81)
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.view.View.performClick(View.java:4654)
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.view.View$PerformClick.run(View.java:19438)
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.os.Handler.handleCallback(Handler.java:733)
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.os.Handler.dispatchMessage(Handler.java:95)
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.os.Looper.loop(Looper.java:146)
10-09 17:20:34.846: E/AndroidRuntime(4080): at android.app.ActivityThread.main(ActivityThread.java:5602)
10-09 17:20:34.846: E/AndroidRuntime(4080): at java.lang.reflect.Method.invokeNative(Native Method)
10-09 17:20:34.846: E/AndroidRuntime(4080): at java.lang.reflect.Method.invoke(Method.java:515)
10-09 17:20:34.846: E/AndroidRuntime(4080): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
10-09 17:20:34.846: E/AndroidRuntime(4080): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
10-09 17:20:34.846: E/AndroidRuntime(4080): at dalvik.system.NativeStart.main(Native Method)
10-09 17:20:36.391: I/Process(4080): Sending signal. PID: 4080 SIG: 9
谢谢大家。
答案 0 :(得分:0)
您需要向您的清单添加权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
答案 1 :(得分:0)
在实现父Activity类的系统提供的代码中出现NPE表明您可能正在使用Activity的子类的不正确初始化的实例。你的调用堆栈设法将几个方法下载到android.app.Activity的代码中,然后在尝试实际工作的第一个失败之前。
从稍微不同的版本中检查一些代码:
public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
if (mParent == null) {
Instrumentation.ActivityResult ar =
mInstrumentation.execStartActivity(
this, mMainThread.getApplicationThread(), mToken, this,
intent, requestCode, options);
我们看到尝试调用实例字段对象的方法,例如mInstrumentation
,并且它可能是其中一个为null。
你写道:
当此片段在MainActivity中扩展片段活动时,一切顺利。但是当它在Activity中应该延伸Activity时应用程序崩溃。
这表明您可能正在尝试使用new
创建自定义Activity类的实例。结果将是一个不正确的初始化实例,许多关键字段仍为空。
您无法使用new
获取活动的有效实例,但只能使用Intent
让系统为您创建一个。