我遇到了一个(我很确定)愚蠢的问题,可以用另一双眼睛。
我有一个应用程序需要在应用程序的几个位置显示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
就像我说的那样,我确信这是错误的,似乎我试图将片段膨胀两次,或者在应用程序的两个位置使用相同的片段来解决问题。
此时我不确定如何修复它。任何建议都将不胜感激。
答案 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" />