Comments (12)
@nothinglhw
ClassNotFoundException 找不到类,跟是否实现onSaveInstanceState并没有关系,你看下你导的包有没有问题
from viewpagerlayoutmanager.
@leochuan 可以正常运行的,只是在fragment重启就会存在这个问题。
from viewpagerlayoutmanager.
这个问题的原因是SaveState是一个私有内部类,在以库形式引入且开启混淆的情况下会被修改类名,导致运行时无法找到这个类,解决办法是配置混淆不混淆这个类,或者直接改成一个外部类好了
from viewpagerlayoutmanager.
@moesama 感谢回复,不过好像不是这个原因,android自身的类是不参与混淆的
这是反编译后得到的SavedState部分的代码
@RestrictTo({android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP})
public static class SavedState
extends AbsSavedState
{
public static final Parcelable.Creator<SavedState> CREATOR = ParcelableCompat.newCreator(new ParcelableCompatCreatorCallbacks()
{
public RecyclerView.SavedState createFromParcel(Parcel paramAnonymousParcel, ClassLoader paramAnonymousClassLoader)
{
return new RecyclerView.SavedState(paramAnonymousParcel, paramAnonymousClassLoader);
}
public RecyclerView.SavedState[] newArray(int paramAnonymousInt)
{
return new RecyclerView.SavedState[paramAnonymousInt];
}
});
Parcelable mLayoutState;
SavedState(Parcel paramParcel, ClassLoader paramClassLoader)
{
super(paramClassLoader);
if (paramClassLoader != null) {}
for (;;)
{
this.mLayoutState = paramParcel.readParcelable(paramClassLoader);
return;
paramClassLoader = RecyclerView.LayoutManager.class.getClassLoader();
}
}
SavedState(Parcelable paramParcelable)
{
super();
}
void copyFrom(SavedState paramSavedState)
{
this.mLayoutState = paramSavedState.mLayoutState;
}
public void writeToParcel(Parcel paramParcel, int paramInt)
{
super.writeToParcel(paramParcel, paramInt);
paramParcel.writeParcelable(this.mLayoutState, 0);
}
}
from viewpagerlayoutmanager.
@leochuan 这个问题解决了么
from viewpagerlayoutmanager.
@frinda 你是有遇到嘛?
from viewpagerlayoutmanager.
是的,Class not found when unmarshalling: android.support.v7.widget.RecyclerView$SavedState
java.lang.ClassNotFoundException: android.support.v7.widget.RecyclerView$SavedState
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:400)
at android.os.Parcel.readParcelableCreator(Parcel.java:2489)
at android.os.Parcel.readParcelable(Parcel.java:2443)
at android.os.Parcel.readValue(Parcel.java:2346)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:2779)
at android.os.Parcel.readSparseArray(Parcel.java:2049)
at android.os.Parcel.readValue(Parcel.java:2403)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2698)
at android.os.BaseBundle.unparcel(BaseBundle.java:269)
at android.os.BaseBundle.putBoolean(BaseBundle.java:410)
at android.support.v4.app.Fragment.setUserVisibleHint(Fragment.java:960)
at android.support.v4.app.FragmentStatePagerAdapter.instantiateItem(FragmentStatePagerAdapter.java:121)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1004)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1152)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:663)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:625)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:606)
at android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:2170)
at android.support.design.widget.TabLayout.dispatchTabSelected(TabLayout.java:1165)
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1158)
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1128)
at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1427)
at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1537)
at android.view.View$PerformClick.run(View.java:22473)
at android.os.Handler.handleCallback(Handler.java:761)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6523)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
Caused by: java.lang.ClassNotFoundException: android.support.v7.widget.RecyclerView$SavedState
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:1346)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:1406)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:400)
at android.os.Parcel.readParcelableCreator(Parcel.java:2489)
at android.os.Parcel.readParcelable(Parcel.java:2443)
at android.os.Parcel.readValue(Parcel.java:2346)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:2779)
at android.os.Parcel.readSparseArray(Parcel.java:2049)
at android.os.Parcel.readValue(Parcel.java:2403)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2698)
at android.os.BaseBundle.unparcel(BaseBundle.java:269)
at android.os.BaseBundle.putBoolean(BaseBundle.java:410)
at android.support.v4.app.Fragment.setUserVisibleHint(Fragment.java:960)
at android.support.v4.app.FragmentStatePagerAdapter.instantiateItem(FragmentStatePagerAdapter.java:121)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1004)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1152)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:663)
at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:625)
at android.support.v4.view.ViewPager.setCurrentItem(ViewPager.java:606)
at android.support.design.widget.TabLayout$ViewPagerOnTabSelectedListener.onTabSelected(TabLayout.java:2170)
at android.support.design.widget.TabLayout.dispatchTabSelected(TabLayout.java:1165)
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1158)
at android.support.design.widget.TabLayout.selectTab(TabLayout.java:1128)
at android.support.design.widget.TabLayout$Tab.select(TabLayout.java:1427)
at android.support.design.widget.TabLayout$TabView.performClick(TabLayout.java:1537)
at android.view.View$PerformClick.run(View.java:22473)
at android.os.Handler.handleCallback(Handler.java:761)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:156)
at android.app.ActivityThread.main(ActivityThread.java:6523)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
from viewpagerlayoutmanager.
你用LinearLayoutManager
看看是不是还会报错,顺便你用的RecyclerView的版本是多少?
from viewpagerlayoutmanager.
用的就是LinearLayoutManager,RecyclerView版本是27.1.0
from viewpagerlayoutmanager.
LinearLayoutManager
是系统的LayoutManager
啊,你确定和我的库有关嘛?你把我库的引用去掉再看看
from viewpagerlayoutmanager.
我没用你的库,就是碰到这个问题,Tablayout+ViewPager+FragmentStatePagerAdapter+RecyclerView用的这些技术
from viewpagerlayoutmanager.
@frinda
FragmentStatePagerAdapter
会保存状态,会调用onSaveInstance()
不是必要的话你换成FragmentPagerAdapter
或者 xml
里给recyclerView
加上 android:saveEnabled="false"
试试
from viewpagerlayoutmanager.
Related Issues (20)
- 滑动到指定位置
- ViewPagerLayoutManager.mOrientation覆盖了父类的LinearLayoutManager.mOrientation
- 能实现每个iten的顶部都是水平的吗
- 如何基于CircleLayoutManager实现椭圆圆弧的效果呢 HOT 4
- How to stop auto scrolling? HOT 1
- ScaleLayoutManager第一次滑动的时候会导致recycleview子布局重现排版
- 如何一次只滑动一个item? HOT 2
- AutoPlayRecyclerView
- 显示多个item时 放大的item左右间距 跟其他item左右间距不一样 - ScaleLayoutManager
- 大于3个item时 放大的item左右间距与其他item左右间距不一样 - ScaleLayoutManager HOT 1
- good job!
- when items are only 3 then why it's scrolls and hide until first visible items rich to end
- 滑动到指定位置调用次数过多会卡死
- LeakCanary内存泄漏
- Big performance issue HOT 1
- CircleScaleLayoutManager
- Infinite status unavailable
- 有iOS的??
- 像小说阅读器那种仿真翻页能实现吗
- 使用PageSnapHelper并没有单页滑动
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from viewpagerlayoutmanager.