13

Phiên bản mới nhất của thư viện hỗ trợ từ sáng nay (Android Support Package v4 revision 11) là nghĩa vụ hỗ trợ các đoạn lồng nhau.Các mảnh ghép lồng nhau bằng thư viện hỗ trợ bản sửa đổi v4 11

Trong dự án của tôi, tôi có một đoạn có chứa ViewPager và ViewPager này chứa một số đoạn.

Tôi đang gọi getSupportFragmentManager() thay vì getFragmentManager để sử dụng FragmentManager của thư viện hỗ trợ.

Vấn đề là tôi vẫn gặp tai nạn như:

java.lang.IllegalStateException: Recursive entry to executePendingTransactions 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416) 
    at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461) 
    at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141) 
    at android.support.v4.view.ViewPager.populate(ViewPager.java:1012) 
    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:523) 
    at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:495) 
    at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1221) 
    at android.view.View.dispatchRestoreInstanceState(View.java:11910) 
    at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2584) 
    at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2590) 
    at android.view.View.restoreHierarchyState(View.java:11888) 
    at android.support.v4.app.Fragment.restoreViewState(Fragment.java:417) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:933) 
    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 
    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 
    at android.os.Handler.handleCallback(Handler.java:615) 
    at android.os.Handler.dispatchMessage(Handler.java:92) 
    at android.os.Looper.loop(Looper.java:137) 
    at android.app.ActivityThread.main(ActivityThread.java:4745) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:511) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
    at dalvik.system.NativeStart.main(Native Method) 

Có điều gì tôi đang làm sai? Hoặc sự hỗ trợ không hỗ trợ các mảnh lồng nhau cho thực?

giao dịch của tôi là đơn giản như này:

getSupportFragmentManager().beginTransaction() 
        .replace(R.id.content, new MyFragment()).commit(); 
+0

Loại phần tử nào là R.id.content? – Yahor10

+0

Đó là một 'FrameLayout'. –

+0

Bạn đã đọc bài viết này chưa? http://stackoverflow.com/questions/6185272/android-honeycomb-how-to-change-fragments-in-a-framelayout-without-re-creating – Yahor10

Trả lời

19

Hãy thử sử dụng getChildFragmentManager() thay vì getSupportFragmentManager(). điều này sẽ giúp

+3

Cái gì? 'getChildFragmentManager()' chỉ có thể được sử dụng bên trong các đoạn và 'getSupportFragmentManager()' chỉ có thể được sử dụng bên trong FragmentActivity? Làm thế nào điều này sẽ bao giờ làm việc? –

Các vấn đề liên quan