0

我遇到了一个(我敢肯定)愚蠢的问题,可以用另一双眼睛。

我有一个应用程序需要在应用程序的多个位置显示 GoogleMaps。我在我的主要活动中成功展示了它,所有 Play 库都已就位,V2 密钥已全部设置,等等。

我的(截断)mapview.xml看起来像:

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

正如我所说,在主要活动上,我可以正确设置 contentView 并绘制地图,没问题。

但是,在另一个活动中,我正在实现选项卡:

    ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Add tabs
    actionBar.addTab(actionBar.newTab().setText(R.string.map).setTabListener(this));

这就是我遇到麻烦的地方。在选项卡选择的侦听器上,我执行以下操作,我确定这会出错(布局是一个空的线性布局):

    GoogleMapFragment mapFragment = new GoogleMapFragment();
    fragmentTransaction = supportFragmentManager.beginTransaction();
    fragmentTransaction.addToBackStack(null);
    fragmentTransaction.replace(layout.getId(), mapFragment);
    fragmentTransaction.commit();

该地图片段如下所示:

@Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.map_view, null);
  }

当它运行时,我会收到各种错误,具体取决于我如何调整它,例如

android.view.InflateException: Binary XML file line #2: Error inflating class fragment
Caused by: java.lang.IllegalArgumentException: Binary XML file line #2: Duplicate id 0x7f040058, tag null, or parent id 0x0 with another fragment for com.google.android.gms.maps.SupportMapFragment

就像我说的,我确定这是错误的,似乎我正在尝试对片段进行两次膨胀,或者可能通过在应用程序的两个位置使用相同的片段而遇到问题。

在这一点上,我不确定如何解决它。任何建议将不胜感激。

4

2 回答 2

-1

您已经在 xml 文件中定义了片段的布局,因此您不必在运行时添加它,只需在活动的 setContentView 中将片段布局(在您的情况下为 mapview.xml)作为参数传递。

于 2013-03-11T23:27:40.197 回答
-1

尝试在布局中使用 MapView 而不是 Fragment。

<com.google.android.gms.maps.MapView
    android:id="@+id/map_view"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
于 2013-03-12T09:04:56.447 回答