在我安装一些Android Studio更新之前,我的Android应用程序运行顺利,并在安装更新后让我升级gradle等。
稍后,Android Studio要求我更新我的Android模拟器(模拟器Nexus 5X API 24 Android v7.0),因为我已经进行了所有这些更改,当我点击运行时我的应用程序无法打开。但请记住,当我调试等时,它没有编码错误。
Android Monitor的错误消息是:
08-13 14:07:30.735 3889-3889/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.smartlegal.law.freeman.smartlegal, PID: 3889
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.smartlegal.law.freeman.smartlegal/com.smartlegal.law.freeman.smartlegal.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at com.smartlegal.law.freeman.smartlegal.MainActivity.onCreate(MainActivity.java:39)
at android.app.Activity.performCreate(Activity.java:6662)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
08-13 14:07:30.744 3889-3896/? W/art: Suspending all threads took: 5.874ms
答案 0 :(得分:0)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
正如错误所述,您正在尝试在不存在的Button上设置onClickListener
(返回null)。为简化起见,当您定义Button时,可以调用findViewById
将Java中的Button与XML元素相关联,但是您传递的ID无效 - 要么您正在尝试在致电setOnClickListener
之前致电setContentView
,或者您传递给findViewById
的ID有错字或者在XML布局文件中根本不存在。
更多信息(例如MainActivity的代码和布局文件)可用于确定问题的确切原因。
答案 1 :(得分:0)
是的,你是对的,我忘了指定editText和Button的ID,这就是为什么不能在XML上找到它们的ID。所以我已经设置好并重新加载了项目,现在它正在顺利运行。谢谢大家的支持。
"正如错误所述,您正在尝试在不存在的Button上设置onClickListener(返回null)。为了简化,当您定义Button时,可以调用findViewById将Java中的Button与XML元素相关联,但是您传递的ID无效。作者:Timothy Langer"。