ActionBar标签中的GoogleMap片段(使用ActionBarSherlock)

时间:2013-03-11 22:42:19

标签: android google-maps android-actionbar actionbarsherlock fragment

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

我有一个应用程序需要在应用程序的几个位置显示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

就像我说的那样,我确信这是错误的,似乎我试图将片段膨胀两次,或者在应用程序的两个位置使用相同的片段来解决问题。

此时我不确定如何修复它。任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:-1)

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

答案 1 :(得分:-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" />