I am trying to use PlaceAutocompleteFragment within my fragment where I also have a SupportMapFragment, at the beginning when the application starts everything works perfectly, but if I move to another fragment and then with the menu I return again to the fragment of the map it thunders.
In my xml I have:
<fragment
android:id="@+id/map_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="true"
class="com.google.android.gms.maps.SupportMapFragment" />
<android.support.v7.widget.CardView
android:id="@+id/content_fragment_places"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="invisible">
<fragment
android:id="@+id/autocomplete_fragment"
android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.v7.widget.CardView>
In my Fragment I have:
public class MapLocalizacionFragment extends Fragment implements OnMapReadyCallback,
OnCameraIdleListener,
GoogleMap.OnCameraMoveStartedListener,
GoogleMap.OnCameraMoveListener,
GoogleMap.OnCameraMoveCanceledListener,
GoogleMap.OnMapClickListener,
PlaceSelectionListener {
private static View VIEW;
SupportMapFragment mapFragment;
GoogleMap map;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
VIEW = inflater.inflate(R.layout.fragment_map, container, false);
mapFragment= (SupportMapFragment) this.getChildFragmentManager().findFragmentById(R.id.map_fragment);
mapFragment.getMapAsync(this);
PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment)
getActivity().getFragmentManager().findFragmentById(R.id.autocomplete_fragment);
autocompleteFragmentPartida.setOnPlaceSelectedListener(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
map = googleMap;
//ubico mapa con cordenadas
}
@Override
public void onPlaceSelected(Place place) {
}
}
The error I get is:
E/AndroidRuntime: FATAL EXCEPTION: main
android.view.InflateException: Binary XML file line #73: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at com.taxi.user.cnc.fragmentsmenu.MapLocalizacionFragment.onCreateView(MapLocalizacionFragment.java:370)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: Binary XML file line #73: Duplicate id 0x7f0f0143, tag null, or parent id 0x7f0f0142 with another fragment for com.google.android.gms.location.places.ui.PlaceAutocompleteFragment
at android.app.Activity.onCreateView(Activity.java:4669)
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:36)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:75)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at com.taxi.user.cnc.fragmentsmenu.MapLocalizacionFragment.onCreateView(MapLocalizacionFragment.java:370)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2080)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1290)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:801)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1677)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:536)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
probe using a try catch in VIEW = inflater.inflate(R.layout.fragment_map, container, false);
The result was that the fragment was shown with the PlaceAutocompleteFragment working perfectly but the map is not showing well, it has functionality controls are seen and it enters the listeners, but the map remains in a solid color.
What could be the problem or how can I solve it?
EDIT
My map works, it's not a problem with the api key, because when I start the app, it shows up perfectly. I use this line when I start the app:
getSupportFragmentManager().beginTransaction().replace(R.id.container, new MapLocalizacionFragment()).commit();
Here everything is fine, but when I click on the menu to return to this same fragment, what has already been said happens. in my menu I use the same line to start the fragment.
getSupportFragmentManager().beginTransaction().replace(R.id.container, new MapLocalizacionFragment()).commit();