【问题标题】:Android: NullPointerException while replacing FrameLayoutAndroid:替换 FrameLayout 时出现 NullPointerException
【发布时间】:2013-11-09 06:29:17
【问题描述】:

我有以下代码:

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

    ViewGroup view = (ViewGroup) inflater.inflate(R.layout.fragment_left, null);

    // test

    SupportMapFragment fragment = new SupportMapFragment();
    FragmentManager fm = getActivity().getSupportFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.map, fragment).commit();

    GoogleMap googleMap = fragment.getMap();

    if(getCameraPosition() == null) { // first time in app
        setCameraPosition(new CameraPosition(getYourLatLng(), 12, 0 ,0));
    }
    googleMap.moveCamera(CameraUpdateFactory.newCameraPosition(getCameraPosition()));       

    googleMap.addMarker(new MarkerOptions()
    .title("Your Position")
    .snippet("This is where your smartphone is located.")
    .position(getYourLatLng()));

    return view;
}

这是我要在 xml 文件中替换的内容:

     <FrameLayout
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

这是怎么回事?无论如何要更新id?

新的堆栈跟踪:

10-29 22:37:52.277: E/AndroidRuntime(16273): FATAL EXCEPTION: main
10-29 22:37:52.277: E/AndroidRuntime(16273): java.lang.NullPointerException: CameraUpdateFactory is not initialized
10-29 22:37:52.277: E/AndroidRuntime(16273):    at com.google.android.gms.internal.s.b(Unknown Source)
10-29 22:37:52.277: E/AndroidRuntime(16273):    at com.google.android.gms.maps.CameraUpdateFactory.aX(Unknown Source)

【问题讨论】:

  • 为什么需要使用findFragmentById(....)?当然你可以直接打电话给fragment.getMap()
  • @Squonk 谢谢!那成功了(仍然想知道为什么它不起作用)。但是现在我遇到了另一个问题:10-29 22:37:52.277: E/AndroidRuntime(16273): java.lang.NullPointerException: CameraUpdateFactory is not initialized - 我将在这里更新我的代码。
  • 您不能在布局前进行相机操作。尝试移动代码以将相机移动到您的 onActivityCreate(或创建视图后的任何其他生命周期调用)

标签: android


【解决方案1】:

你需要设置一个 MapReadyCallback。

https://developers.google.com/android/reference/com/google/android/gms/maps/MapFragment

地图准备好后,您可以移动相机。 (有一个功能提供了一个谷歌地图,可以让你移动相机。)

https://developers.google.com/android/reference/com/google/android/gms/maps/OnMapReadyCallback.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多