【问题标题】:Google Map API V2 Android FragmentGoogle Map API V2 Android 片段
【发布时间】:2014-07-28 12:04:15
【问题描述】:

我正在做一个项目,我需要加入 Google 地图。我正在使用 API v2,但在显示地图时遇到了一些问题。

    package com.lan.me;

import com.google.android.gms.maps.GoogleMap;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class Geoloc extends Fragment {

    GoogleMap map;
    View view;

    public static Fragment newInstance() {
        Geoloc mFrgment = new Geoloc();
        return mFrgment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.map, container, false);

        return view;
    }
}

这是我的 Geoloc.java,在我的 map.xml 中有这个:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    class="com.google.android.gms.maps.MapFragment" />  

我在编译或启动我的应用程序时没有任何问题,但是当我点击我的按钮时,我的应用程序不想工作。当我双击 LogCat 时,错误似乎在那里:

view = inflater.inflate(R.layout.map, container, false);

但我真的不明白为什么。有人有想法吗?

编辑:

07-29 06:00:14.202: E/AndroidRuntime(1169): FATAL EXCEPTION: main
07-29 06:00:14.202: E/AndroidRuntime(1169): Process: com.lan.me, PID: 1169
07-29 06:00:14.202: E/AndroidRuntime(1169): android.view.InflateException: Binary XML file line #1: Error inflating class fragment
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at com.lan.me.Geoloc.onCreateView(Geoloc.java:24)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.Fragment.performCreateView(Fragment.java:1700)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1040)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.Activity.onCreateView(Activity.java:4805)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at com.lan.me.Geoloc.onCreateView(Geoloc.java:24)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.Fragment.performCreateView(Fragment.java:1700)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.BackStackRecord.run(BackStackRecord.java:684)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.os.Handler.handleCallback(Handler.java:733)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.os.Handler.dispatchMessage(Handler.java:95)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.os.Looper.loop(Looper.java:136)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.ActivityThread.main(ActivityThread.java:5017)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at java.lang.reflect.Method.invokeNative(Native Method)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at java.lang.reflect.Method.invoke(Method.java:515)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at dalvik.system.NativeStart.main(Native Method)
07-29 06:00:14.202: E/AndroidRuntime(1169): Caused by: java.lang.IllegalArgumentException: Binary XML file line #1: Duplicate id 0x7f090027, tag null, or parent id 0x7f090004 with another fragment for com.google.android.gms.maps.MapFragment
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.app.Activity.onCreateView(Activity.java:4791)
07-29 06:00:14.202: E/AndroidRuntime(1169):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
07-29 06:00:14.202: E/AndroidRuntime(1169):     ... 26 more

编辑编辑:

http://uprapide.com/image/811589-properties_2

问题来了……

【问题讨论】:

  • 把你的logcat贴在这里,这里不需要图片哥们,复制粘贴就行了。
  • @pratik : 我刚刚添加了我的 logcat,你可以在我的第一篇文章中看到它!
  • @MD : 我只是添加了我的 logcat,你可以在我的第一篇文章中看到它!

标签: android android-fragments google-maps-api-2


【解决方案1】:

在这种情况下,您必须:

1) 使用 Fragment 扩展您的类

2) 在您的片段 xml 中采用相对布局并将您的片段与 id map 一起放入其中

3) 在 Fragment 类中添加你的 Fragment xml

4) 使用以下代码在 onActivityCreated() 中获取地图 ID

googleMap=((SupportMapFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

5) 没有第五步..:) 就是这样

【讨论】:

  • 我已经看过这篇文章,但我的问题是我的班级,我被片段扩展了,这就是问题......
  • 嗯,好的,我现在试试,我会告诉你它是否有效,谢谢
  • 现在好多了,我有我的:public class Geoloc extends FragmentActivity { GoogleMap map;查看视图;公共静态 FragmentActivity newInstance() { Geoloc mFrgment = new Geoloc();返回 mFrgment;但问题是FragemntActivity,不可能将它转换成Fragment(或者我发现的所有信息都说没有=/)
  • 是的,你不能转换成 Fragment 所以我给你一个建议,我更新我上面的 ans 看看..
  • 是的,我明白了,现在我可以编译了,但 MapsInitializer.initialize(getActivity()); (错误页面肯定比以前少了很多错误^^)
猜你喜欢
  • 1970-01-01
  • 2013-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多