Android onResume在onMapReady之前调用

Android onResume在onMapReady之前调用,android,Android,我有一个片段(fragment\u search),我想在其中以编程方式添加另一个片段(map\u fragment),但我遇到了一个问题,即在OnMapReadyCallback.onMapReady()之前调用tab\u content.onResume() 代码如下: fragment_search.xml: <LinearLayout...> <FrameLayout android:id="@+id/search_map_fragmen

我有一个片段(fragment\u search),我想在其中以编程方式添加另一个片段(map\u fragment),但我遇到了一个问题,即在OnMapReadyCallback.onMapReady()之前调用tab\u content.onResume()

代码如下:

fragment_search.xml:

<LinearLayout...>
    <FrameLayout
            android:id="@+id/search_map_fragment_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </FrameLayout>
</LinearLayout>
SomeFragment.class:

public class SomeFragment extends SupportMapFragment {
    MapView mapView;
    GoogleMap map;
    private MapView mMapView;
    private GoogleMap mGoogleMap;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.some_layout, container, false);

        mMapView = (MapView) v.findViewById(R.id.mapview);
        mMapView.onCreate(savedInstanceState);

        return v;
    }

    public void setMap(GoogleMap map){
        this.mGoogleMap=map;
    }
...}
堆栈跟踪:

java.lang.NullPointerException: Attempt to invoke interface method 'void maps.ei.bz.o()'  on a null object reference
                                                                  at maps.ei.n.b(Unknown Source)
                                                                  at com.google.android.gms.maps.internal.i$a.onTransact(:com.google.android.gms.alldynamite:115)
                                                                  at android.os.Binder.transact(Binder.java:387)
                                                                  at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onResume(Unknown Source)
                                                                  at com.google.android.gms.maps.SupportMapFragment$zza.onResume(Unknown Source)
                                                                  at com.google.android.gms.dynamic.zza$7.zzb(Unknown Source)
                                                                  at com.google.android.gms.dynamic.zza.zza(Unknown Source)
                                                                  at com.google.android.gms.dynamic.zza.onResume(Unknown Source)
                                                                  at com.google.android.gms.maps.SupportMapFragment.onResume(Unknown Source)
                                                                  at com.beermeet.ui.search.SearchFragment.onResume(SearchFragment.java:5
7)

我认为SearchFragment.onCreateView是错误的,但我不知道正确的方法是什么。
关于我做错了什么有什么提示吗?谢谢

当您启动
SearchFragment
时,它显然会调用其
onResume()
方法作为片段生命周期的一部分。 您的日志显示,
onResume()
中存在
NullPointerException
。你应该检查一下

关于你的问题,

fragment.getMapAsync(onMapReadyCallback);

onResume()
将在获取
onMapReadyCallback
之前被调用,因为
getmapsync()
是异步调用,将在另一个线程中运行,该线程不会阻塞UI线程,因此
onResume()
将在获取
onMapReadyCallback

之前被调用,这非常有意义。异步加载映射的正确方式是什么?您所做的方式是正确的。您只需要根据需要处理其他代码流。fragment.getMapAsync()是正确的。您应该更改代码的其他部分,以实现所需的功能。
java.lang.NullPointerException: Attempt to invoke interface method 'void maps.ei.bz.o()'  on a null object reference
                                                                  at maps.ei.n.b(Unknown Source)
                                                                  at com.google.android.gms.maps.internal.i$a.onTransact(:com.google.android.gms.alldynamite:115)
                                                                  at android.os.Binder.transact(Binder.java:387)
                                                                  at com.google.android.gms.maps.internal.IMapFragmentDelegate$zza$zza.onResume(Unknown Source)
                                                                  at com.google.android.gms.maps.SupportMapFragment$zza.onResume(Unknown Source)
                                                                  at com.google.android.gms.dynamic.zza$7.zzb(Unknown Source)
                                                                  at com.google.android.gms.dynamic.zza.zza(Unknown Source)
                                                                  at com.google.android.gms.dynamic.zza.onResume(Unknown Source)
                                                                  at com.google.android.gms.maps.SupportMapFragment.onResume(Unknown Source)
                                                                  at com.beermeet.ui.search.SearchFragment.onResume(SearchFragment.java:5
fragment.getMapAsync(onMapReadyCallback);