【发布时间】:2015-05-28 14:06:21
【问题描述】:
我现在正在关注浏览器指南
http://developer.android.com/training/implementing-navigation/lateral.html
我遇到了一个严重的问题。
正如我在标题中所写,我试图将谷歌地图 v2 放在 viewpager 的每个片段中,但遇到了这个错误。 (同时生成两个 ScreenSlidePageFragment 并为每个它们膨胀地图。)
Caused by: java.lang.IllegalArgumentException: Binary XML file line #8: Duplicate id 0x7f0a0059, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.MapFragment
at android.app.Activity.onCreateView(Activity.java:4835)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755)
at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
at com.maurat.trackuz.ScreenSlidePageFragment.onCreateView(ScreenSlidePageFragment.java:39)
我认为是因为这个 viewpager 一次加载 2 个页面,并且地图片段的 id 被重复。
ScreenSlidePagerAdapter
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Log.d(TAG, "getItem " + position);
return new ScreenSlidePageFragment();
}
@Override
public int getCount() {
return NUM_PAGES;
}
}
ScreenSlidePageFragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance) {
Log.d(TAG, "onCreateView");
ViewGroup view = (ViewGroup) inflater.inflate(
R.layout.fragment_screen_slide_page,
container,
false);
return view;
}
fragment_screen_slide_page.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#C7F464">
<fragment
android:name="com.google.android.gms.maps.MapFragment"
android:id="@+id/map_container"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
所以我已经找到并尝试了几种解决方案,但暂时没有找到解决方案。 https://stackoverflow.com/a/14929151/1122517 https://stackoverflow.com/a/14695397/1122517
现在我正在寻找一种解决方案,例如以编程方式制作片段。
请帮帮我。
【问题讨论】:
-
不要在布局中声明 mapview 片段,而是在运行时使用 FragmentTransaction 添加 SupportMapFragment。
-
@Arun Kumar 3 好的,我试试。但有原因吗?我是新手,请解释一下。
标签: android android-viewpager fragment mapfragment