Under normal conditions works great, I do not understand why it does not work, I tell you what I'm doing, I open a DialogFragment that shows a Map; using a menupop of an item in a gallery that is in a fragment, the detail is that the getFragmentManager () can not be casted by (SupportMapFragment), trying several options instead of using SupportMapFragment, deal with MapFragment which allows casting and it works to a certain point, the app crashed when I try to open the dialogfragment of another item, it marks me an error of duplicity of xml, abjunto log. also abjunto the code of the xml
some alternative .....
Code of my Class DF_GeolocalizarVisita.java:
public class DF_GeolocalizarVisita extends DialogFragment implements OnMapReadyCallback {
private GoogleMap mMap;
public LatLng location;
ImageButton fab_close;
double Lat;
double Lon;
public DF_GeolocalizarVisita(){ }
static DF_GeolocalizarVisita newInstance() {
DF_GeolocalizarVisita f = new DF_GeolocalizarVisita();
return f;
}
@Override
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); }
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.df_geolocalizarvisita, container, false);
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.argb(85,15, 15, 15)));
fab_close = (ImageButton) v.findViewById(R.id.fab_close);
Lat = Double.valueOf(getArguments().getString("Lat"));
Lon = Double.valueOf(getArguments().getString("Lon"));
//MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map_geovisita);
SupportMapFragment mapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map_geovisita);
mapFragment.getMapAsync(this);
fab_close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
return v;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
if (ActivityCompat.checkSelfPermission(getActivity(),
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(),
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
return;
}
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(Lat, Lon),15));
mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_place_white_36dp))
.anchor(0.5f, 1f)
.position(new LatLng(Lat, Lon))
.draggable(false));
}
}
Error log:
android.view.InflateException: Binary XML file line #28: Binary XML file line #28: Error inflating class fragment
at android.view.LayoutInflater.inflate(LayoutInflater.java:551)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at com.mark.exportadora.Productor.DF_GeolocalizarVisita.onCreateView(DF_GeolocalizarVisita.java:48)
at android.app.Fragment.performCreateView(Fragment.java:2281)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:984)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1164)
at android.app.BackStackRecord.run(BackStackRecord.java:793)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1557)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:488)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7231)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: android.view.InflateException: Binary XML file line #28: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:855)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at com.mark.exportadora.Productor.DF_GeolocalizarVisita.onCreateView(DF_GeolocalizarVisita.java:48)
at android.app.Fragment.performCreateView(Fragment.java:2281)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:984)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1164)
at android.app.BackStackRecord.run(BackStackRecord.java:793)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1557)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:488)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7231)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by: java.lang.IllegalArgumentException: Binary XML file line #28: Duplicate id 0x7f0f016e, tag null, or parent id 0x7f0f016d with another fragment for com.google.android.gms.maps.MapFragment
at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2227)
at android.app.FragmentController.onCreateView(FragmentController.java:99)
at android.app.Activity.onCreateView(Activity.java:6071)
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:36)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:766)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:855)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)
at android.view.LayoutInflater.inflate(LayoutInflater.java:527)
at android.view.LayoutInflater.inflate(LayoutInflater.java:429)
at com.mark.exportadora.Productor.DF_GeolocalizarVisita.onCreateView(DF_GeolocalizarVisita.java:48)
at android.app.Fragment.performCreateView(Fragment.java:2281)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:984)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1164)
at android.app.BackStackRecord.run(BackStackRecord.java:793)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1557)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:488)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7231)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
df_geolocalizarvisita.xml code
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
android:id="@+id/card2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:scrollbars="vertical"
card_view:cardCornerRadius="10dp"
card_view:cardElevation="10dp"
card_view:cardUseCompatPadding="true">
<!--
<fragment
android:id="@+id/map_geovisita"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mark.exportadora.Productor.DF_GeolocalizarVisita" />
-->
<fragment
android:id="@+id/map_geovisita"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.mark.exportadora.Productor.DF_GeolocalizarVisita" />
<ImageButton
android:id="@+id/fab_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:background="@color/zxing_transparent"
android:contentDescription=""
android:cropToPadding="false"
android:keepScreenOn="false"
android:src="@drawable/ic_close_outline_black_48dp" />
</android.support.v7.widget.CardView>