【发布时间】:2015-07-15 09:26:18
【问题描述】:
首先让我告诉你我想要做什么。 我有一个带有导航抽屉和一些片段类的活动。在活动恢复中,我调用了一个 MapFragment,我用它在谷歌地图上用蓝点向用户显示其当前位置。
这运行成功。
现在我想从导航抽屉中显示地图上的图钉,因此我正在调用用于从服务器下载图钉并在地图上显示它们的函数。该函数名为 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();
}
}
);
}
注意:当我在 MyMapFragment 的 onActivityCreated 方法中调用时,它工作正常并成功绘制引脚,但是当我尝试从 MainActivity 调用它时给我一个 NullpointerException。
在 MainActivity 中,我在 switch case 中调用它,因为我正在使用 SwitchCase 相应地导航到片段。
public void navigateToFragment(int pos) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
final MyMapFragment myMapFragment = new MyMapFragment();
switch (pos) {
case R.id.home:
if(!isFirstRun) {
fragmentTransaction.replace(R.id.frame, myMapFragment, "MapFragment").addToBackStack("MapFragment").commit();
}else{
isFirstRun=false;
}
//
break;
case R.id.mark_pin:
isFirstRun=false;
if (myMapFragment!=null){
myMapFragment.GetAllPins();}
break;
}
所以我在 ProgressDialog 上收到 Null pointerException ,但如果我注释掉以下错误。
FATAL EXCEPTION: main
java.lang.NullPointerException: Can not pass null context in to retrieve ion instance
告诉我如何从主活动中调用此函数以使用该 MyMapFragment 在地图上显示图钉。 我不想制作不同的地图片段来显示上面的图钉。请帮我。
【问题讨论】:
-
将参数上下文添加到方法并在使用不同上下文调用时传递它
-
它给了我同样的 NullpointerException 错误
-
能否展开 logcat 输出并显示代码在哪几行中断
-
Ion.with(context) .... 在这一行 .... 当我做 public void GetAllPins(Context context) {
-
在调用方法时尝试使用
Log.e("Context", "Context: " + context);,看看何时尝试传入空上下文
标签: android google-maps android-fragments