我遇到了一个(我敢肯定)愚蠢的问题,可以用另一双眼睛。
我有一个应用程序需要在应用程序的多个位置显示 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
就像我说的,我确定这是错误的,似乎我正在尝试对片段进行两次膨胀,或者可能通过在应用程序的两个位置使用相同的片段而遇到问题。
在这一点上,我不确定如何解决它。任何建议将不胜感激。