【发布时间】:2015-01-16 14:00:45
【问题描述】:
我正在使用 FrameLayout 来显示片段
<FrameLayout
android:id="@+id/fragment_content"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/bottom_layout"
android:background="@android:color/white" >
</FrameLayout>
并打开我正在使用的片段
ft.add(R.id.fragment_content, frag);
ft.commit();
fm.beginTransaction();
一个片段包含地图,所以我在布局文件中使用这些行
<fragment
android:id="@+id/trafic_Alarm_main_mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.Utilities.MySupportMapFragment"
android:layout_alignParentTop="true" />
这是我的 Java 代码
try{
mMap=(MySupportMapFragment)TabsActivity.fm.findFragmentById(R.id.trafic_Alarm_main_mapView)).getMap();
}catch (Exception e){
mMap=((MySupportMapFragment)getChildFragmentManager().findFragmentById(R.id.trafic_Alarm_main_mapView)).getMap();
}
现在,如果调用 getChildFragmentManager() 并且我切换到另一个使用 getSupportFragmentManager 开始事务的片段会导致崩溃。提供日志
01-16 18:36:15.690 7294-7294/com.TrafikAlarm E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.TrafikAlarm, PID: 7294
java.lang.IllegalStateException: Recursive entry to executePendingTransactions
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1461)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
我正在使用 android studio 并编译这些库,
compile 'com.google.android.gms:play-services:6.5.87'
compile 'com.android.support:appcompat-v7:21.0.3'
当我使用 eclipse 时,我不需要使用 getChildFragmentManager 并且一切正常。
提前致谢。
【问题讨论】:
-
那个 Java 代码的上下文是什么?它位于何处。在我假设的父片段中?
-
可能您正试图使用嵌套在其他片段中的片段。参考这个链接stackoverflow.com/questions/22150950/…
-
安迪,上下文是片段活动类。
-
你为什么第二次打电话给
fm.beginTransaction();? -
Matish 只接一个电话
标签: android android-fragments google-maps-android-api-2 android-nested-fragment