请任何人帮助我,我是android studio中的新手,我的应用程序在恢复应用程序时崩溃,
我有三种不同的片段布局
yourPlayerItem.errorLog()
恢复应用程序时我需要加载一个带有地图的片段,
我收到以下错误:
引起:java.lang.IllegalArgumentException:二进制XML文件行
39:将id为0x7f0f018a,标记为null或父ID为0xffffffff与com.google.android.gms.maps.SupportMapFragment
的另一个片段重复
请任何一个人如何解决这个问题。
这是我的片段类:
<fragment
android:id="@+id/map_online"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/action_bar" /> with different ID.
谢谢。
答案 0 :(得分:0)
您的应用程序崩溃,因为片段内的静态片段无法删除或替换,您只能隐藏或显示此静态片段。 像这样制作你的xml文件:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/coreLayout"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical">
<FrameLayout
android:id="@+id/fragment_home_container"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
你的fragment.java文件中的写下这段代码:
PlaceAutocompleteFragment autocompleteFragmentSourceAddress = new PlaceAutocompleteFragment();
replaceFragment(autocompleteFragmentSourceAddress, R.id.fragment_home_container);
答案 1 :(得分:0)
您需要在重新创建片段视图中的新片段之前删除片段,因此在==null
方法中添加onCreatedView
条件,
View mainView;// this should be global variable.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(mainview==null){
mainView = inflater.inflate(R.layout.fragment_layout, container, false);
initializeView();//initialize all views in this method instead of onActivityCreated
}
return mainView;
}
当您推送上方片段时添加此内容以避免重复
try {
android.app.Fragment fragment = getFragmentManager().findFragmentById(R.id.map_online);
if (fragment != null) {
android.app.FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.remove(fragment);
ft.commit();
}
} catch (Exception e) {
e.printStackTrace();
}