Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果我刷过两个标签,为什么Android会重新创建我的Google MapFragment?[浏览网页]_Java_Android_Google Maps_Android Viewpager - Fatal编程技术网

Java 如果我刷过两个标签,为什么Android会重新创建我的Google MapFragment?[浏览网页]

Java 如果我刷过两个标签,为什么Android会重新创建我的Google MapFragment?[浏览网页],java,android,google-maps,android-viewpager,Java,Android,Google Maps,Android Viewpager,好的,我的应用程序中有三个选项卡: 表1、表2和表3 表3包含我在亚洲设置的精确位置的MapFragment。当我从选项卡3滑动到选项卡2,然后再滑动回选项卡3时,一切正常。但如果我滑动到选项卡3,返回到选项卡1,然后返回到选项卡3,所有内容都将完全重置,我的自定义位置也将重置。是什么导致了这个问题?任何帮助都将不胜感激。这是我的密码: public class MapViewActivity extends Fragment implements OnItemSelectedL

好的,我的应用程序中有三个选项卡: 表1、表2和表3

表3包含我在亚洲设置的精确位置的MapFragment。当我从选项卡3滑动到选项卡2,然后再滑动回选项卡3时,一切正常。但如果我滑动到选项卡3,返回到选项卡1,然后返回到选项卡3,所有内容都将完全重置,我的自定义位置也将重置。是什么导致了这个问题?任何帮助都将不胜感激。这是我的密码:

public class MapViewActivity extends Fragment implements
        OnItemSelectedListener {

    // Google Map
    private GoogleMap googleMap;
    private Spinner spinner;
    private View view;
    private static final LatLng KABUL = new LatLng(34.31, 69.11);

    @Override
    public void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }

    private void setUpMapIfNeeded() {
        if (googleMap == null) {
            googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map))
                    .getMap();
        }
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);

        // Look up the AdView as a resource and load a request.
        AdView adView = (AdView) getActivity().findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
        setRetainInstance(true);
        super.onActivityCreated(savedInstanceState);
    }

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

        try {
            // Loading map
            initilizeMap();

        } catch (Exception e) {
            e.printStackTrace();
        }

        spinner = (Spinner) view.findViewById(R.id.spinner);
        spinner.setOnItemSelectedListener(this);
        // Create an ArrayAdapter using the string array and a default spinner
        // layout
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                getActivity().getBaseContext(), R.array.map_type_array,
                android.R.layout.simple_spinner_item);
        // Specify the layout to use when the list of choices appears
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        // Apply the adapter to the spinner
        spinner.setAdapter(adapter);
        // Inflate the layout for this fragment
        return view;
    }

    @Override
    public void onDestroyView() {

        Fragment f = (Fragment) getFragmentManager().findFragmentById(R.id.map);
        if (f != null) {
            getFragmentManager().beginTransaction().remove(f).commit();
        }

        super.onDestroyView();
    }


    /**
     * function to load map. If map is not created it will create it for you
     * */
    private void initilizeMap() {
        if (googleMap == null) {
            googleMap = ((SupportMapFragment) getFragmentManager()
                    .findFragmentById(R.id.map)).getMap();

            // check if map is created successfully or not
            if (googleMap == null) {
                Crouton.makeText(getActivity(), "Unable to create map",
                        Style.ALERT).show();
            }

            googleMap.getUiSettings().setMyLocationButtonEnabled(true);
            googleMap.getUiSettings().setScrollGesturesEnabled(false);
            Marker Kabul = googleMap.addMarker(new MarkerOptions()
                    .position(KABUL));
            googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(KABUL, 6));

        }
    }

    @Override
    public void onStart() {
        super.onStart();
        EasyTracker.getInstance(getActivity()).activityStart(getActivity()); // Add
                                                                                // this
                                                                                // method.
    }

    @Override
    public void onStop() {
        super.onStop();
        EasyTracker.getInstance(getActivity()).activityStop(getActivity()); // Add
                                                                            // this
                                                                            // method.
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position,
            long id) {

        String itemSelected = parent.getItemAtPosition(position).toString();
        System.out.println(itemSelected);

        if (itemSelected.equalsIgnoreCase("Normal")) {
            googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        }
        if (itemSelected.equalsIgnoreCase("Satellite")) {
            googleMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
        }
        if (itemSelected.equalsIgnoreCase("Terrain")) {
            googleMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
        }
        if (itemSelected.equalsIgnoreCase("Hybrid")) {
            googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // TODO Auto-generated method stub

    }

}

因为默认情况下,ViewPager只存储两个
片段。
设置更多以正确工作:

viewPager.setOffscreenPageLimit(3);

你用的是哪一个寻呼机?试试这个:因为它可以保存页面。@ItzikSamara是的,我用的就是这个@伊齐克萨马拉让我发布包含它的类的代码。它成功了!非常感谢你!!!!我为此挣扎了好几天。你是一个救生员:丹乔伊你的检查伙伴:)更好的做法是,如果碎片已经打开,就不要重新创建它。正在检查savedInstanceState==null
viewPager.setOffscreenPageLimit(3);