Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android maps v2 crashes when reopened in fragment

google maps v2 android loads the first time and then I am switching to other fragments which works when I come back to map fragment it crashes.I have attached the code below :I really appreciate any help .Thanks in Advance.

code for map in fragmentMain:

public class FragmentMain extends Fragment {
    TextView textView;

    static final LatLng HAMBURG = new LatLng(53.558, 9.927);
    static final LatLng test = new LatLng(53.551, 9.993);
    private GoogleMap map;

    public FragmentMain() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_main, null);
        map = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

                Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG)
                    .title("Hamburg"));

                Marker test = map.addMarker(new MarkerOptions()
                    .position(test)
                    .title("test")
                    .snippet("test")
                    .icon(BitmapDescriptorFactory
                        .fromResource(R.drawable.ic_launcher)));

                // Move the camera instantly to hamburg with a zoom of 15.
                map.moveCamera(CameraUpdateFactory.newLatLngZoom(HAMBURG, 15));

                // Zoom in, animating the camera.
                map.animateCamera(CameraUpdateFactory.zoomTo(10), 2000, null);

        return view;
    }
}

code for MainActivity :

  FragmentManager fm = MainActivity.this.getSupportFragmentManager();
                    FragmentTransaction ft = fm.beginTransaction();
                    Fragment fragment = null;


                    if(selectedItem.compareTo("second") == 0) {
                        fragment = new FragmentMain();
                    } else if(selectedItem.compareTo("third") == 0) {
                        fragment = new FragmentButton();
                    } else if(selectedItem.compareTo("first") == 0) {
                        fragment = new FragmentCheckBox();
                    } 


                    if(fragment != null) {
                        // Replace current fragment by this new one
                        ft.replace(R.id.activity_main_content_fragment, fragment);


                        ft.commit();
                        // Set title accordingly
                        tvTitle.setText(selectedItem);
                    }

Error:

 FATAL EXCEPTION: main
 android.view.InflateException: Binary XML file line #83: Error inflating class fragment
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
    at com.mapsfragment.maps.FragmentMain.onCreateView(FragmentMain.java:32)
like image 731
jason Avatar asked Oct 31 '13 13:10

jason


2 Answers

Just put this code on OnDestroyView()

public void onDestroyView() 
 {
    super.onDestroyView(); 
    Fragment fragment = (getFragmentManager().findFragmentById(R.id.map));  
    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    ft.remove(fragment);
    ft.commit();
}
like image 179
Hardik Avatar answered Oct 05 '22 23:10

Hardik


Try this at the beginning of your map fragment onCreateView

if (view != null) {
        ViewGroup parent = (ViewGroup) view.getParent();
        if (parent != null) {
            parent.removeView(view);
        }
    }
    try {
        view = inflater.inflate(R.layout.fragment_main, container, false);
    } catch (InflateException e) {

    }
like image 31
Breadbin Avatar answered Oct 06 '22 01:10

Breadbin