繁体   English   中英

当我重新打开 Google Maps Fragment 时它会崩溃

[英]Google Maps Fragment Crashes when I reopen it

大家好..

我在活动中有TabLayout 我在第 3 个选项卡上添加了谷歌地图。 它工作得很好。 但是,当我从选项卡 3 滑动到 1 并尝试再次滑动到选项卡 2 或 3 时。应用程序崩溃了 请我需要一些帮助。

这是我的片段代码:

package com.besho.myapplic.Tour_Fold.Tour_Frg;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.besho.myapplic.R;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

/**
 * Created by Besho on 3/8/2016.
 */
public class Flow_Gard_Three extends Fragment {

    private SupportMapFragment fragment;
    private GoogleMap map;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        FragmentManager fm = getChildFragmentManager();

        fragment = (SupportMapFragment) fm.findFragmentById(R.id.flow_gard_map);
        if (fragment == null) {
            fragment = SupportMapFragment.newInstance();
            fm.beginTransaction().replace(R.id.flow_gard_map, fragment).commit();
        }

        return inflater.inflate(R.layout.flow_gard_three,container,false);
    }


    @Override
    public void onResume() {
        super.onResume();
        if (map == null) {
            map = fragment.getMap();
            LatLng flow_gard_mp = new LatLng(25.0599693,55.2423876);
            map.addMarker(new MarkerOptions().position(flow_gard_mp).title("حديقة الزهور"));

            map.moveCamera(CameraUpdateFactory.newLatLng(flow_gard_mp));
            CameraPosition cameraPosition = new CameraPosition.Builder()
                    .target(flow_gard_mp)      // Sets the center of the map to Mountain View
                    .zoom(17)                   // Sets the zoom
                    .bearing(90)                // Sets the orientation of the camera to east
                    .tilt(30)                   // Sets the tilt of the camera to 30 degrees
                    .build();

            map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
        }
    }

这是我的错误:

AndroidRuntime: FATAL EXCEPTION: main
                                                           Process: com.besho.myapplic, PID: 582
                                                           android.view.InflateException: Binary XML file line #8: Error inflating class fragment
                                                               at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719)
                                                               at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
                                                               at com.besho.myapplic.Pages_Fragments.Flow_Gard_Three.onCreateView(Flow_Gard_Three.java:35)
                                                               at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
                                                               at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                                                               at android.support.v4.app.FragmentManagerImpl.attachFragment(FragmentManager.java:1430)
                                                               at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:728)
                                                               at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
                                                               at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
                                                               at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
                                                               at android.support.v4.view.ViewPager.populate(ViewPager.java:1177)
                                                               at android.support.v4.view.ViewPager.populate(ViewPager.java:1025)
                                                               at android.support.v4.view.ViewPager$3.run(ViewPager.java:254)
                                                               at android.view.Choreographer$CallbackRecord.run(Choreographer.java:814)
                                                               at android.view.Choreographer.doCallbacks(Choreographer.java:614)
                                                               at android.view.Choreographer.doFrame(Choreographer.java:583)
                                                               at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:800)
                                                               at android.os.Handler.handleCallback(Handler.java:733)
                                                               at android.os.Handler.dispatchMessage(Handler.java:95)
                                                               at android.os.Looper.loop(Looper.java:146)
                                                               at android.app.ActivityThread.main(ActivityThread.java:5602)
                                                               at java.lang.reflect.Method.invokeNative(Native Method)
                                                               at java.lang.reflect.Method.invoke(Method.java:515)
                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
                                                               at dalvik.system.NativeStart.main(Native Method)
                                                            Caused by: java.lang.IllegalStateException: Fragment com.google.android.gms.maps.SupportMapFragment did not create a view.
                                                               at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2319)
                                                               at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                                                               at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:170)
                                                               at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:690)
                                                               at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
                                                               at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
                                                               at com.besho.myapplic.Pages_Fragments.Flow_Gard_Three.onCreateView(Flow_Gard_Three.java:35) 
                                                               at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
                                                               at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) 
                                                               at android.support.v4.app.FragmentManagerImpl.attachFragment(FragmentManager.java:1430) 
                                                               at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:728) 
                                                               at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) 
                                                               at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570) 
                                                               at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
                                                               at android.support.v4.view.ViewPager.populate(ViewPager.java:1177) 
                                                               at android.support.v4.view.ViewPager.populate(ViewPager.java:1025) 
                                                               at android.support.v4.view.ViewPager$3.run(ViewPager.java:254) 
                                                               at android.view.Choreographer$CallbackRecord.run(Choreographer.java:814) 
                                                               at android.view.Choreographer.doCallbacks(Choreographer.java:614) 
                                                               at android.view.Choreographer.doFrame(Choreographer.java:583) 
                                                               at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:800) 
                                                               at android.os.Handler.handleCallback(Handler.java:733) 
                                                               at android.os.Handler.dispatchMessage(Handler.java:95) 
                                                               at android.os.Looper.loop(Looper.java:146) 
                                                               at android.app.ActivityThread.main(ActivityThread.java:5602) 
                                                               at java.lang.reflect.Method.invokeNative(Native Method) 
                                                               at java.lang.reflect.Method.invoke(Method.java:515) 
                                                               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
                                                               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
                                                               at dalvik.system.NativeStart.main(Native Method) 

R.id.flow_gard_map应该是一个FrameLayout 就是这样!

然后在你的活动中 -

SupportMapFragment mapFragment;

if (mapFragment == null) {
        mapFragment = SupportMapFragment.newInstance();
        mapFragment.getMapAsync(this);
        getChildFragmentManager()
                .beginTransaction()
                .add(R.id.flow_gard_map, mapFragment)
                .commit();
    }

您可以使用此代码:

SupportMapFragment supportMapFragment = 
        (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);

你还应该在onCreateView()而不是onResume()创建你的地图

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM