Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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
Android 如何从主活动调用片段的函数_Android_Google Maps_Android Fragments - Fatal编程技术网

Android 如何从主活动调用片段的函数

Android 如何从主活动调用片段的函数,android,google-maps,android-fragments,Android,Google Maps,Android Fragments,首先让我告诉你我想做什么。 我有一个带有导航抽屉和一些片段类的活动。在“活动简历”中,我调用了一个MapFragment,我使用它在google地图上用蓝点向用户显示其当前位置 此操作正在成功运行 现在,从导航抽屉中,我想在地图上显示PIN,为此,我调用了用于从服务器下载PIN并在地图上显示它们的函数。此函数名为GetAllPins,我使用Ion库以以下方式执行此操作: public void GetAllPins() { progressDialog.show(); Io

首先让我告诉你我想做什么。 我有一个带有导航抽屉和一些片段类的活动。在“活动简历”中,我调用了一个MapFragment,我使用它在google地图上用蓝点向用户显示其当前位置

此操作正在成功运行

现在,从导航抽屉中,我想在地图上显示PIN,为此,我调用了用于从服务器下载PIN并在地图上显示它们的函数。此函数名为GetAllPins,我使用Ion库以以下方式执行此操作:

 public void GetAllPins() {

        progressDialog.show();
 Ion.with(getActivity())
                .load(MyServiceUrl)
                .progressHandler(new ProgressCallback() {
                    @Override
                    public void onProgress(long downloaded, long total) {
                        if (downloaded == total) {
                            progressDialog.dismiss();
                        }
                    }
                })
                .setMultipartParameter("name", "Stacy")
                .setMultipartParameter("latitude","18.92239u")
                .setMultipartParameter("longitude", "24.98329")
                .asJsonObject()
                .setCallback(new FutureCallback<JsonObject>() {
                    @Override
                    public void onCompleted(Exception e, JsonObject result) {
                        if (result == null) {
                            progressDialog.dismiss();
                            Toast.makeText(getActivity(), "Error in establishing connection with server", Toast.LENGTH_SHORT).show();

                        } else {
                            Toast.makeText(getActivity(), "Completed successfully", Toast.LENGTH_SHORT).show();
}
}
);
}
因此,我在ProgressDialog上得到一个Null pointerException,但是如果我注释掉以下内容,就会发生错误

 FATAL EXCEPTION: main
java.lang.NullPointerException: Can not pass null context in to retrieve ion instance
告诉我如何从主活动调用此函数,以使用MyMapFragment在地图上显示管脚。
我不想制作一个不同的地图片段来显示上面的图钉。请帮帮我

从日志本身可以清楚地看出,调用上下文的错误是。。。从片段中,当您调用getActivity()时,u将获得适当的上下文。。。但是当您从MainActivity调用相同的方法时,getActivity()将返回null。。。因此,最好将上下文作为参数添加到函数中,当从fragment调用时,通过传递getActivity()调用它,从MainActivity通过传递'this'调用它

我没有测试它。。。但它应该有用

像这样从MainActivity调用函数,fragment.GetAllPins(MainActivity.this)


当您从片段调用时,它应该是这样的,GetAllPins(getActivity())

将参数上下文添加到方法中,并在使用不同的上下文调用它时传递它。它给了我相同的NullpointerException错误您可以展开logcat输出并显示代码中断的行吗。使用(上下文)。。。。在这条线上。。。。。。。。。。。。当我使用public void GetAllPins(上下文)时{尝试使用
Log.e(“上下文”,“上下文:”+Context);
当你调用该方法时,请看当你试图在null contextit中传递时,它给了我与nullpointerException相同的错误,我已经知道我必须传递上下文,我这样做了,它给了我nullpointerException getAllPins方法在Mapfragment中有多大作用,MainActivity。这会在其中起作用吗?不…When u从片段调用,应该是这样的,GetAllPins(getActivity());在尝试从片段访问活动之前,还应该确保片段已附加到活动。是的,它已附加,因为我可以看到它上的位置地图已初始化,所有事情都已完成
 FATAL EXCEPTION: main
java.lang.NullPointerException: Can not pass null context in to retrieve ion instance