栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java.lang.IllegalStateException: Fragment already added 异常处理!!!!!!

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java.lang.IllegalStateException: Fragment already added 异常处理!!!!!!

10-15 15:52:00.094 3808 3808 E AndroidRuntime: FATAL EXCEPTION: main
10-15 15:52:00.094 3808 3808 E AndroidRuntime: Process: com.xxxx.xxx, PID: 3808
10-15 15:52:00.094 3808 3808 E AndroidRuntime: java.lang.IllegalStateException: Fragment already added
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.fragment.app.Fragment.setInitialSavedState(Fragment.java:679)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.viewpager2.adapter.FragmentStateAdapter.ensureFragment(FragmentStateAdapter.java:269)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.viewpager2.adapter.FragmentStateAdapter.onBindViewHolder(FragmentStateAdapter.java:175)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.viewpager2.adapter.FragmentStateAdapter.onBindViewHolder(FragmentStateAdapter.java:67)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView A d a p t e r . o n B i n d V i e w H o l d e r ( R e c y c l e r V i e w . j a v a : 7065 ) 10 − 1515 : 52 : 00.09438083808 E A n d r o i d R u n t i m e : a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . R e c y c l e r V i e w Adapter.onBindViewHolder(RecyclerView.java:7065) 10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView Adapter.onBindViewHolder(RecyclerView.java:7065)10−1515:52:00.09438083808EAndroidRuntime:atandroidx.recyclerview.widget.RecyclerViewAdapter.bindViewHolder(RecyclerView.java:7107)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView R e c y c l e r . t r y B i n d V i e w H o l d e r B y D e a d l i n e ( R e c y c l e r V i e w . j a v a : 6012 ) 10 − 1515 : 52 : 00.09438083808 E A n d r o i d R u n t i m e : a t a n d r o i d x . r e c y c l e r v i e w . w i d g e t . R e c y c l e r V i e w Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012) 10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.recyclerview.widget.RecyclerView Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)10−1515:52:00.09438083808EAndroidRuntime:atandroidx.recyclerview.widget.RecyclerViewRecycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.recyclerview.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:288)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.recyclerview.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:345)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.recyclerview.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:361)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.recyclerview.widget.GapWorker.prefetch(GapWorker.java:368)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at androidx.recyclerview.widget.GapWorker.run(GapWorker.java:399)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:755)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:95)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at android.os.Looper.loop(Looper.java:154)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6141)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:913)
10-15 15:52:00.094 3808 3808 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:803)

报错AndroidRuntime: at androidx.fragment.app.Fragment.setInitialSavedState(Fragment.java:679)
这个错误是我从 fragment A 切换到 fragment B ,
fragment B再切换到 fragment C 中,
再切换到 fragment B中, fragment B 里面 使用了ViewPager2 + FragmentStateAdapter + RadioButton切换主题,问题就出在我使用的ViewPager2 + FragmentStateAdapter这里。
每次我在多个fragmentA,B,C之间多次切换后,切换到fragment B,点击 radioButton 通知ViewPager2 切换 fragment的主题时,使用方法viewPager2.setCurrentItem(index);,就报上面的错误。
我在想,是否是滑动效果的问题,于是 用
viewPager2.setCurrentItem(index,false);然后,由于viewpager2 里面的fragment 里面有recycleviewer ,把viewpager2 的宽高 固定 ,问题解决。
总结:1,viewPager2.setCurrentItem(index)改成viewPager2.setCurrentItem(index,false);
2,viewPager2 在布局文件里面把宽高 固定。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/328148.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号