我有一个活动,在其xml中有一个framelayout,占用了大部分显示器,让不同的片段根据用户进出视图,如下所示:
dispatch_async(dispatch_get_main_queue(), ^{
/* Your UI code */
});
我有一个Track.java,假设设置并显示googlemaps,它确实如此,但是当我点击后退按钮然后尝试再次调用该片段时,应用程序崩溃了。
错误日志:
public void ShiftView(Object obj) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.activity_main_framelayout, (Fragment) obj);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
}
track_display.xml
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: FATAL EXCEPTION: main
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: Process: , PID: 27723
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: android.view.InflateException: Binary XML file line #17: Error inflating class fragment
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:770)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at .Track.onCreateView(Track.java:58)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.Fragment.performCreateView(Fragment.java:2114)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1082)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.BackStackRecord.run(BackStackRecord.java:833)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.FragmentManagerImpl$1.run(FragmentManager.java:452)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.os.Looper.loop(Looper.java:145)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5972)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Binary XML file line #17: Duplicate id 0x7f0d00b6, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.maps.MapFragment
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2135)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.Activity.onCreateView(Activity.java:5610)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV11.callActivityOnCreateView(AppCompatDelegateImplV11.java:41)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:830)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:732)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at .Track.onCreateView(Track.java:58)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.Fragment.performCreateView(Fragment.java:2114)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:904)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1082)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.BackStackRecord.run(BackStackRecord.java:833)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.FragmentManagerImpl$1.run(FragmentManager.java:452)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:739)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.os.Looper.loop(Looper.java:145)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5972)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:372)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
10-14 18:07:16.347 27723-27723/ E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Track.java
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<fragment
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/map"
class="com.google.android.gms.maps.MapFragment" />
</RelativeLayout>
我怎样才能停止崩溃,所以它到目前为止的行为与其他每个片段一样?
答案 0 :(得分:1)
添加此代码以重绘地图
@Override
public void onDestroyView() {
super.onDestroyView();
MapFragment f = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map);
if (f != null)
getFragmentManager().beginTransaction().remove(f).commit();
}