I am trying to display GMaps in a Dialog, can it be done?
I have the layout as
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/LoginFormContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp" >
<fragment
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
class="com.google.android.gms.maps.MapFragment"
android:gravity="center" />
</RelativeLayout>
and im inflating this XML to a dialog, as below...
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.dialog_location, null);
AlertDialog.Builder builder = new AlertDialog.Builder(context).setView(layout);
AlertDialog alertDialog = builder.create();
alertDialog.show();
But, during inflation, i get Runtime errors...
02-02 12:52:56.045: W/dalvikvm(23044): threadid=1: thread exiting with uncaught exception (group=0x40f862a0)
02-02 12:52:56.050: E/AndroidRuntime(23044): FATAL EXCEPTION: main
02-02 12:52:56.050: E/AndroidRuntime(23044): android.view.InflateException: Binary XML file line #8: Error inflating class fragment
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
02-02 12:52:56.050: E/AndroidRuntime(23044): at com.amithgc.taskflow.handler.activationMethods.dialog.ActivationLocationDialog.show(ActivationLocationDialog.java:31)
02-02 12:52:56.050: E/AndroidRuntime(23044): at com.amithgc.taskflow.handler.activationMethods.ActivationMethodLocation.showLinkingPopup(ActivationMethodLocation.java:37)
02-02 12:52:56.050: E/AndroidRuntime(23044): at com.amithgc.taskflow.profile.ActivationMethodItemView$1.onClick(ActivationMethodItemView.java:62)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.view.View.performClick(View.java:4223)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.view.View$PerformClick.run(View.java:17275)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.os.Handler.handleCallback(Handler.java:615)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.os.Handler.dispatchMessage(Handler.java:92)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.os.Looper.loop(Looper.java:137)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.app.ActivityThread.main(ActivityThread.java:4898)
02-02 12:52:56.050: E/AndroidRuntime(23044): at java.lang.reflect.Method.invokeNative(Native Method)
02-02 12:52:56.050: E/AndroidRuntime(23044): at java.lang.reflect.Method.invoke(Method.java:511)
02-02 12:52:56.050: E/AndroidRuntime(23044): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
02-02 12:52:56.050: E/AndroidRuntime(23044): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
02-02 12:52:56.050: E/AndroidRuntime(23044): at dalvik.system.NativeStart.main(Native Method)
02-02 12:52:56.050: E/AndroidRuntime(23044): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.app.Fragment.instantiate(Fragment.java:584)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.app.Fragment.instantiate(Fragment.java:552)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.app.Activity.onCreateView(Activity.java:4834)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
02-02 12:52:56.050: E/AndroidRuntime(23044): ... 18 more
02-02 12:52:56.050: E/AndroidRuntime(23044): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment
02-02 12:52:56.050: E/AndroidRuntime(23044): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
02-02 12:52:56.050: E/AndroidRuntime(23044): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
02-02 12:52:56.050: E/AndroidRuntime(23044): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-02 12:52:56.050: E/AndroidRuntime(23044): at android.app.Fragment.instantiate(Fragment.java:574)
02-02 12:52:56.050: E/AndroidRuntime(23044): ... 21 more
Can anyone please help me with this??
You cannot inflate a layout into a fragment when that layout includes a fragment http://developer.android.com/about/versions/android-4.2.html#NestedFragments
MapFragment should be added dynamically in code, for example:
MapFragment fragment = new MapFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.mapView, fragment).commit();
and in xml layout:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/LoginFormContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="0dp" >
<FrameLayout
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
</RelativeLayout>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With