Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我正在从onClickListener中删除一个方法并单独调用它,然后它';问题出在哪里_Java_Android - Fatal编程技术网

Java 我正在从onClickListener中删除一个方法并单独调用它,然后它';问题出在哪里

Java 我正在从onClickListener中删除一个方法并单独调用它,然后它';问题出在哪里,java,android,Java,Android,我有一个android应用程序,我点击一个按钮获取当前位置。但是,该按钮正在调用一个方法,该方法可以实现此目的。现在我想从onClickListener方法中删除该方法,并在项目开始时单独调用它。我的代码在onClickListener下时 binding.buttonConfirmPickup.setOnClickListener(view -> onButtonConfirmPickupClicked()); 但每当我注释这行代码并调用onButtonConfirmPickupCli

我有一个android应用程序,我点击一个按钮获取当前位置。但是,该按钮正在调用一个方法,该方法可以实现此目的。现在我想从onClickListener方法中删除该方法,并在项目开始时单独调用它。我的代码在onClickListener下时

binding.buttonConfirmPickup.setOnClickListener(view -> onButtonConfirmPickupClicked());
但每当我注释这行代码并调用
onButtonConfirmPickupClicked()
方法时,它就会抛出nullpointerexception

这是我的日志

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mostain.taxi.rider/com.mostain.taxi.rider.activities.main.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.CameraPosition com.google.android.gms.maps.GoogleMap.getCameraPosition()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2895)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1616)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:176)
        at android.app.ActivityThread.main(ActivityThread.java:6651)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'com.google.android.gms.maps.model.CameraPosition com.google.android.gms.maps.GoogleMap.getCameraPosition()' on a null object reference
        at com.mostain.taxi.rider.activities.main.MainActivity.onButtonConfirmPickupClicked(MainActivity.java:472)
        at com.mostain.taxi.rider.activities.main.MainActivity.onCreate(MainActivity.java:212)
        at android.app.Activity.performCreate(Activity.java:7088)
        at android.app.Activity.performCreate(Activity.java:7079)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)

那么,为什么它在onClick方法下工作,但在它之外不工作呢?

onMapReady接口的onMapReady(GoogleMap-GoogleMap)方法为您提供了GoogleMap对象。使用此对象初始化地图对象,然后尝试调用onButtonConfirmPickupClicked()。

您的错误表明您的
GoogleMap
实例尚未初始化。因此出现空ptr异常。这与点击无关listeners@Christilyn但只要它在onClick方法下,它就不会抛出错误。正如@christilyn提到的,这与click侦听器无关。在单击侦听器外部调用/调用onButtonConfirmPickupClicked时,此时映射对象尚未初始化,并且系统没有映射对象,因此引发空指针异常。但是,如果在单击按钮之前在单击侦听器中打开ButtonConfirmPickupClicked,则视图映射对象已初始化/可能可见,因此它工作正常。你们能否建议一种解决方法,例如如何在发生这种情况之前初始化映射对象@ooohahaw当您调用
getmapsync
时,您将得到
onMapReady
回调,该回调指示映射对象已初始化。然后,您可以启用视图可单击/在收到回调后使视图可见。这取决于您的使用情况。此外,您还可以在启用视图之前检查设备上是否安装了google play服务,因为这对地图至关重要。谢谢,尽管我试过了您之前说的话,这对我有用。谢谢。