使用Mapview的片段返回导航无法按预期工作

时间:2014-12-12 18:56:47

标签: android android-fragments

我有一个活动,其中有两个片段。加载应用程序时,带有mapview的片段A由transaction.add(R.id.fragment_container, fragmentA).commit();

加载

我有一个侧边菜单,当我选择一个项目时,第二个片段被加载。

Fragment fragmentB = new FragmentB();
Bundle args = new Bundle();
fragmentB .setArguments(args);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragmentB );
transaction.addToBackStack(null);
transaction.commit();

但是当我按下fragmentB的后退按钮时,应用会退出。

所以我将以下代码添加到MainActivity

@Override
    public void onBackPressed() {
        if (getFragmentManager().getBackStackEntryCount() > 0 ){
            getFragmentManager().popBackStack();
        } else {
            super.onBackPressed();
        }
    }

现在片段A加载了,但是地图是静态的,并且它没有为当前位置设置动画,尽管我有代码将相机移动到onCreateView方法中的当前位置(onCreateView()里面的setUpMapIfNeeded())

private void setUpMapIfNeeded() {
        if (mMap == null) {
            mMap = mapView.getMap();
        }
        if(mMap!=null){
            mMap.setMyLocationEnabled(true);
            CameraPosition cameraPosition = new CameraPosition.Builder().target(new LatLng(0, 0)).zoom(17).build();
            mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        }
    }

所有生命周期方法都在fragmentA中调用,但mapview没有显示当前位置。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

您需要初始化Google Maps API。请参阅文档here

MapsInitializer.initialize(context);

之前致电mapView.getMap();