java.lang.IllegalArgumentException: Wrong state class, expecting View State but received

今天在开发过程中遇到了以下的错误:
java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class android.support.v7.widget.RecyclerView$SavedState instead. This usually happens when two views of different type have the same id in the same hierarchy. This view’s id is id/dynamic_rv. Make sure other views do not use the same id.
因为我的首页是用viewpager结合fragment做的几个可以左右滑动的TAB页面,A页面又用了github上开源的下拉刷新控件,当离开A页面后再从其他页面返回时,便出现了以上错误,大致意思就是layout的ID重复了,至于为什么会重复,就没有深入了解下去了。
解决方式是找到自定义控件的类,比如我的是这样的

        public class NRecyclerView extends BaseLayout {

    private RecyclerView.LayoutManager layoutManager;
    private InnerAdapter adapter;
    private final RecyclerView.AdapterDataObserver mDataObserver = new DataObserver();

    public NRecyclerView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    private ViewGroup AdtureView;
    private ViewGroup BottomView;
    ........

在此控件中重写onRestoreInstanceState方法,

    @Override
    protected void onRestoreInstanceState(Parcelable state) {
        try {
            super.onRestoreInstanceState(state);
        }catch (Exception e) {}
        state=null;
    }

解决问题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值