My app is using a ListFragment on left side that the user can use to select what fragment to use on the right hand side.
In sort it seems impossible to show the MapView more than once. The first problem is that it only allow one instance of MapView per Activity.
# Exception 1:
You are only allowed to have a single MapView in a MapActivity
Therefore, I saved my MapView and container in the Activity class:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentManager.enableDebugLogging(true);
setContentView(R.layout.main);
mapViewContainer = LayoutInflater.from(this).inflate(R.layout.maplayout, null);
mapView = (MapView) mapViewContainer.findViewById(R.id.map_view);
}
However, this give me the next problem:
# Exception 2:
The specified child already has a parent.
You must call removeView() on the child’s parent first.
I have tried to remove the view, using this code:
((ViewGroup)mapViewContainer).removeView(mapView);
((ViewGroup)mapView.getParent()).removeView(mapView);
Got a NullPointerExeption.
I would appreciate any good ideas, or if you could share if you have been successful in doing this?
Thanks 🙂
Yeah, bumped into this one, too.
Do not add your MapView in XML layout file for your fragment. Instead, just leave a place for it, say, in a LinearLayout with id=”@+id/your_map_container_id”
Declare a MapView private member in YourMapContainerFragment’s:
Then, go like this in YourMapContainerFragment’s onCreateView():
This will make the same MapView object be reused across removals/additions of your fragment to activity.