gpt4 book ai didi

java - 支持MapFragment和NullPointerException

转载 作者:行者123 更新时间:2023-12-01 07:23:56 25 4
gpt4 key购买 nike

我尝试使用 SupportMapFragment 并收到此错误:

java.lang.NullPointerException: Attempt to invoke interface method 'void com.google.maps.api.android.lib6.c.c.o()' on a null object reference
at com.google.maps.api.android.lib6.c.z.b(Unknown Source)

错误出现在此处:

    @Override
public void onViewCreated(View view, Bundle savedInstanceState) {

SupportMapFragment supportMapFragment;

if (Build.VERSION.SDK_INT < 21) {
supportMapFragment = (SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map);
} else {
supportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
}

supportMapFragment.getMapAsync(this);

super.onViewCreated(view, savedInstanceState);
}

我实现了 OnMapReadyCallBack:

public class MapsFragment extends SupportMapFragment implements OnMapReadyCallback {

我不知道空引用在哪里。

onCreate 函数:

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_maps, container, false);
}

堆栈跟踪:

03-22 22:38:07.291    3758-3758/itcc.li.lieventuregradle E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: itcc.li.lieventuregradle, PID: 3758
java.lang.NullPointerException: Attempt to invoke interface method 'void com.google.maps.api.android.lib6.c.c.o()' on a null object reference
at com.google.maps.api.android.lib6.c.z.b(Unknown Source)
at com.google.android.gms.maps.internal.x.onTransact(SourceFile:115)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onResume(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$a.onResume(Unknown Source)
at com.google.android.gms.dynamic.a$7.b(Unknown Source)
at com.google.android.gms.dynamic.a.a(Unknown Source)
at com.google.android.gms.dynamic.a.onResume(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment.onResume(Unknown Source)
at android.support.v4.app.Fragment.performResume(Fragment.java:1829)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:993)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1136)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1499)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:456)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5257)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

fragment_maps.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

最佳答案

问题1)

如果以下行确实在您的代码中(这是正确的)

public class MapsFragment extends SupportMapFragment ...

然后删除onCreateView方法。

您正在尝试将 map fragment 膨胀为 map fragment 。

问题2)

除掉这个可憎的东西。

if (Build.VERSION.SDK_INT < 21) {
supportMapFragment = (SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map);
} else {
supportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
}

您可以根据需要调用 getFragmentManager()getChildFragmentManager() 从 fragment 访问 fragment 管理器。两者都将是支持 fragment 管理器的实例,因为您正在支持 fragment 中工作。

而且您不必找到 map fragment ,您就是它。

问题3)

尊重生命周期逻辑。在重写方法的开头调用 super.onViewCreated(...) 并在重写方法的末尾调用 super.onDestroyView() (如果您将使用它) 。以同样的方式,您希望 fragment 的祖先首先初始化并最后清理。

关于java - 支持MapFragment和NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com