Open goldze opened 4 years ago
程序运行后在Bugly上发现一些异常 java.lang.ClassCastException:java.lang.NullPointerException cannot be cast to me.goldze.mvvmhabit.http.ResponseThrowable
查看源码后发现是因为
RetrofitClient.getInstance().create(DemoApiService.class)
.demoGet()
.compose(RxUtils.bindToLifecycle(getLifecycleProvider())) // 请求与View周期同步
.compose(RxUtils.schedulersTransformer()) // 线程调度
.compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换
.subscribe(new Consumer<BaseResponse
}
}, new Consumer<ResponseThrowable>() {
@Override
public void accept(ResponseThrowable throwable) throws Exception {
}
});
并不是所有的异常信息都会经过我们自己写的异常处理,具体原因还在定位。建议修改为
RetrofitClient.getInstance().create(DemoApiService.class)
.demoGet()
.compose(RxUtils.bindToLifecycle(getLifecycleProvider())) // 请求与View周期同步
.compose(RxUtils.schedulersTransformer()) // 线程调度
.compose(RxUtils.exceptionTransformer()) // 网络错误的异常转换
.subscribe(new Consumer<BaseResponse
}
}, new Consumer<Exception>() {
@Override
public void accept(Exception ex) throws Exception {
if( ex instanceof ResponseThrowable) {
//TODO
} else {
//TODO
}
}
});
@751519917 感谢反馈!!
AndroidX那个分支的recycleview 套装是不是需要更新才行? "bindingcollectionadapter" : "me.tatarka.bindingcollectionadapter2:bindingcollectionadapter", "bindingcollectionadapter-recyclerview": "me.tatarka.bindingcollectionadapter2:bindingcollectionadapter-recyclerview",
2.x的版本不支持AndroidX
多个fragment入栈,出栈后,fragment泄露
错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型;
需要: RecyclerView,ItemBinding
你好,导入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?
https://github.com/evant/binding-collection-adapter @bujinhai 可以通过源码改
https://github.com/evant/binding-collection-adapter @bujinhai 可以通过源码改
请问怎么改才能解决这个问题?
多个fragment入栈,出栈后,fragment泄露
你这边应该是ViewPage加fragment造成的,你可以看看这篇文章https://blog.csdn.net/weixin_30682415/article/details/94983262
网络请求服务器不存在的时候会报以下错误: Caused by: java.net.ConnectException: Failed to connect to /192.168.70.140:8888 at okhttp3.internal.connection.RealConnection.connectSocket(RealConnection.java:242) at okhttp3.internal.connection.RealConnection.connect(RealConnection.java:160) at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257) at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135) at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at me.goldze.mvvmhabit.http.interceptor.logging.LoggingInterceptor.intercept(LoggingInterceptor.java:78) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at me.goldze.mvvmhabit.http.interceptor.CacheInterceptor.intercept(CacheInterceptor.java:29) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121) at me.goldze.mvvmhabit.http.interceptor.BaseInterceptor.intercept(BaseInterceptor.java:32) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
add "screenSize" of configChanges in manifest to not recreate fragment cause it not work sometime ( for me is Android 18)
错误:无法将类BindingRecyclerViewAdapters中的方法setAdapter应用到给定类型; 需要:RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds <?超级T>,ViewHolderFactory 找到:RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter <CAP#1>,ItemIds,ViewHolderFactory 原因:CAP类型不符合等式约束条件 :CAP#1 等式约束条件:CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds <?super T>,ViewHolderFactory)中声明的对象 ,CAP#1是新类型变量: CAP#1从?的捕获扩展对象
你好,引入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?
这个我目前改动是 把布局中 databing{adater} 取消,改到代码中setadapter,这样可以让demo跑起来,我的gradle是 3.5.2,
错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型; 需要: RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory 找到: RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter<CAP#1>,ItemIds,ViewHolderFactory 原因: 推断类型不符合等式约束条件 推断: CAP#1 等式约束条件: CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法 setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory)中声明的Object 其中, CAP#1是新类型变量: CAP#1从?的捕获扩展Object
你好,导入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?
这个问题我想是 databinding 泛型的原因导致的, 我这样解决了这个问题 这个是 recyclerview 配置了 binding:adapter="@{adapter}" 产生的错误 比如demo中的 network fragment 先理清adapter的泛型 是哪个对象 这里是com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 然后在布局添加这句
修改这句
错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型; 需要: RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory 找到: RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter<CAP#1>,ItemIds,ViewHolderFactory 原因: 推断类型不符合等式约束条件 推断: CAP#1 等式约束条件: CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法 setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory)中声明的Object 其中, CAP#1是新类型变量: CAP#1从?的捕获扩展Object 你好,导入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?
这个问题我想是 databinding 泛型的原因导致的, 我这样解决了这个问题 这个是 recyclerview 配置了 binding:adapter="@{adapter}" 产生的错误 比如demo中的 network fragment 先理清adapter的泛型 是哪个对象 这里是com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 然后在布局添加这句
修改这句 为 新的语句是明确了泛型的(可以查一下databinding 泛型的使用),这样 demo跑起来没问题
我不知道为什么前面的代码消失了。这里添加补充 添加 import com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 修改为 name=adapter type=MyDatabindingAdapter<NetWorkItemViewModel>
错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型; 需要: RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory 找到: RecyclerView,ItemBinding,ObservableList,BindingRecyclerViewAdapter<CAP#1>,ItemIds,ViewHolderFactory 原因: 推断类型不符合等式约束条件 推断: CAP#1 等式约束条件: CAP#1,NetWorkItemViewModel 其中, T是类型变量: T扩展已在方法 setAdapter(RecyclerView,ItemBinding,List,BindingRecyclerViewAdapter,ItemIds<? super T>,ViewHolderFactory)中声明的Object 其中, CAP#1是新类型变量: CAP#1从?的捕获扩展Object 你好,导入项目报上面的错误,gradle版本为3.5.3,请问怎么解决?
这个问题我想是 databinding 泛型的原因导致的, 我这样解决了这个问题 这个是 recyclerview 配置了 binding:adapter="@{adapter}" 产生的错误 比如demo中的 network fragment 先理清adapter的泛型 是哪个对象 这里是com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 然后在布局添加这句 修改这句 为 新的语句是明确了泛型的(可以查一下databinding 泛型的使用),这样 demo跑起来没问题
我不知道为什么前面的代码消失了。这里添加补充 添加 import com.goldze.mvvmhabit.ui.network.NetWorkItemViewModel 修改为 name=adapter type=MyDatabindingAdapter
如果不需要在Adapter里面执行特殊的操作,那么可以不设置adapter,只要你设置了itembing和items,如果你没有设置adapter,表达式会为你绑定默认的适配器
这样就可以了
这样就可以了
great
多个fragment入栈,出栈后,fragment泄露
你这边应该是ViewPage加fragment造成的,你可以看看这篇文章https://blog.csdn.net/weixin_30682415/article/details/94983262
没用使用ViewPage诶,用的Frafmention的库结合这个,也尝试过直接用原始fragment的 FragmentManager来切换,一样会泄露
更新到最新的3.6.3的As和5.6.4的Gradle,跑不起来了
更新到最新的3.6.3的As和5.6.4的Gradle,跑不起来了
这个问题作者其实已经作过解释了,你找找关键字CAP#1,作者建议gradle不要超过3.5,上面也有回复怎么避免这个问题,我前面的回复太特定了,固定了模板,没有什么参考价值,没有特别的adapter需要 不设置就好,会自动使用默认的
各种内存泄漏...
什么世道,这种东西还有人star??? 谁用谁死的节奏
LoggingInterceptor 报错 在intercept方法中segmentList = ((Request) request.tag()).url().encodedPathSegments(); 其中 request.tag()出现了为null的情况,导致程序不能成长执行
这个用base 继承的方式局限性太大了,建议作者用ActivityLifecycleCallbacks来去掉继承的局限
什么世道,这种东西还有人star??? 谁用谁死的节奏
这框架怎么了。。。刚准备用。。
什么世道,这种东西还有人star??? 谁用谁死的节奏
这框架怎么了。。。刚准备用。。
这框架会限制太多,灵活度不高,可以借鉴,切忌不要拿来即用,自己多想想自己的项目现在什么阶段,结合实际情况自己定制。
什么世道,这种东西还有人star??? 谁用谁死的节奏
这框架怎么了。。。刚准备用。。
这框架会限制太多,灵活度不高,可以借鉴,切忌不要拿来即用,自己多想想自己的项目现在什么阶段,结合实际情况自己定制。
项目刚准备开发,属于要快速上架的产品。。。想用这个框架快速开发的,省的自己去搭建框架。。应该没啥大问题吧。。我看你说的以为有多严重的设计缺陷呢。。
什么世道,这种东西还有人star??? 谁用谁死的节奏
这框架怎么了。。。刚准备用。。
这框架会限制太多,灵活度不高,可以借鉴,切忌不要拿来即用,自己多想想自己的项目现在什么阶段,结合实际情况自己定制。
老哥 我看了你头像。。你和我哥长的一模一样😂😂😂
执行完requestBuilder.build(),url发生了重定向
需要离线鉴黄的可以看我首页,demo使用mvvm
错误: 不兼容的类型: Context无法转换为Application
public BaseViewModel(@NonNull Application application) { this(application, null); }
public BaseViewModel(@NonNull Application application, M model) { super(application); this.model = model; mCompositeDisposable = new CompositeDisposable(); }
------------------ 原始邮件 ------------------ 发件人: "ChanKing"<notifications@github.com>; 发送时间: 2020年6月29日(星期一) 中午11:12 收件人: "goldze/MVVMHabit"<MVVMHabit@noreply.github.com>; 抄送: "657598922"<657598922@qq.com>;"Comment"<comment@noreply.github.com>; 主题: Re: [goldze/MVVMHabit] 【2020】Bug问题,统一在此反馈 (#67)
错误: 不兼容的类型: Context无法转换为Application
你看一下BaseViewModel的构造方法
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
viewpager+fragment页面重新启动时,闪退
Build version: 3.0.0 Current date: 2020-07-01 11:00:18 Device: Xiaomi Mi 10 Pro
Stack trace:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gotoschool.teacher/me.goldze.mvvmhabit.base.ContainerActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.util.SparseArray.get(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3312)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3461)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:5367)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5275)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2048)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:227)
at android.app.ActivityThread.main(ActivityThread.java:7573)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:953)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.util.SparseArray.get(int)' on a null object reference
at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:936)
at me.goldze.mvvmhabit.base.ContainerActivity.onCreate(ContainerActivity.java:39)
at android.app.Activity.performCreate(Activity.java:7893)
at android.app.Activity.performCreate(Activity.java:7880)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3287)
... 13 more
User actions: 2020-07-01 10:58:59: SplashActivity created 2020-07-01 10:58:59: SplashActivity resumed 2020-07-01 10:59:00: SplashActivity paused 2020-07-01 10:59:00: MainActivity created 2020-07-01 10:59:00: MainActivity resumed 2020-07-01 10:59:01: SplashActivity destroyed 2020-07-01 10:59:07: MainActivity paused 2020-07-01 10:59:07: ContainerActivity created 2020-07-01 10:59:07: ContainerActivity resumed 2020-07-01 10:59:08: ContainerActivity paused 2020-07-01 10:59:08: ContainerActivity created 2020-07-01 10:59:09: ContainerActivity resumed 2020-07-01 10:59:11: ContainerActivity paused 2020-07-01 10:59:11: ContainerActivity resumed 2020-07-01 10:59:11: ContainerActivity destroyed 2020-07-01 10:59:12: ContainerActivity paused 2020-07-01 10:59:12: MainActivity resumed 2020-07-01 10:59:12: ContainerActivity destroyed 2020-07-01 10:59:14: MainActivity paused 2020-07-01 10:59:14: ContainerActivity created 2020-07-01 10:59:14: ContainerActivity resumed 2020-07-01 10:59:15: ContainerActivity paused 2020-07-01 10:59:15: ContainerActivity created 2020-07-01 10:59:15: ContainerActivity resumed 2020-07-01 10:59:17: ContainerActivity paused 2020-07-01 10:59:17: ContainerActivity created 2020-07-01 10:59:17: ContainerActivity resumed 2020-07-01 10:59:22: ContainerActivity paused 2020-07-01 10:59:22: ContainerActivity resumed 2020-07-01 10:59:22: ContainerActivity destroyed 2020-07-01 10:59:22: ContainerActivity destroyed 2020-07-01 10:59:23: ContainerActivity paused 2020-07-01 10:59:23: ContainerActivity created 2020-07-01 10:59:23: ContainerActivity resumed 2020-07-01 10:59:40: ContainerActivity paused 2020-07-01 10:59:41: ContainerActivity resumed 2020-07-01 10:59:50: ContainerActivity paused 2020-07-01 10:59:50: ContainerActivity destroyed 2020-07-01 10:59:50: ContainerActivity created
1、如果不重写adapter,只用viewModel,一个recyclerview里包含着另一个recyclerview,我发现第二个recyclerview的viewmodel生命周期方法都没有走,这样会造成内存泄露吗? 2、如果用recyclerview默认给的adapter是BindingRecyclerViewAdapters还是BindingCollectionAdapters里面设置的默认adapter?
网络请求data返回空的时候出现 The mapper function returned a null value.
这么多bug。。。。。。
你好,非常感谢你分享的这套框架,帮我快速构建开发了不少小项目。 最近遇到个问题,尝试多次还是没搞定,不知能否在示例中,增加【如何在列表中,获取某个ITEM下,某个VIEW的示例】。 期待你的答复,非常感谢。
你好,非常感谢你分享的这套框架,帮我快速构建开发了不少小项目。 最近遇到个问题,尝试多次还是没搞定,不知能否在示例中,增加【如何在列表中,获取某个ITEM下,某个VIEW的示例】。 期待你的答复,非常感谢。
不支持AndroidX吗
1、如果不重写adapter,只用viewModel,一个recyclerview里包含着另一个recyclerview,我发现第二个recyclerview的viewmodel生命周期方法都没有走,这样会造成内存泄露吗? 2、如果用recyclerview默认给的adapter是BindingRecyclerViewAdapters还是BindingCollectionAdapters里面设置的默认adapter?
貌似会有这个问题。。。
如果要加侧边栏我该如何操作?
/MVVMHabit/app/build/generated/ap_generated_sources/debug/out/com/goldze/mvvmhabit/databinding/FragmentNetworkBindingImpl.java:158: 错误: 无法将类 BindingRecyclerViewAdapters中的方法 setAdapter应用到给定类型;
me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapters.setAdapter(this.mboundView2, viewModelItemBinding, viewModelObservableList, adapter, (me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter.ItemIds)null, (me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapter.ViewHolderFactory)null, (androidx.recyclerview.widget.AsyncDifferConfig)null);
^
需要: RecyclerView,ItemBinding
1、如果不重写adapter,只用viewModel,一个recyclerview里包含着另一个recyclerview,我发现第二个recyclerview的viewmodel生命周期方法都没有走,这样会造成内存泄露吗? 2、如果用recyclerview默认给的adapter是BindingRecyclerViewAdapters还是BindingCollectionAdapters里面设置的默认adapter?
如果是较复杂的操作,可以参考demo里的itemmodel,把第二个recyclerview的items和itembing放在itemmodel里面这样就跟普通的操作是一样的了,如果很复杂的需要得到view那就继承BindingRecyclerViewAdapters。 BindingCollectionAdapters里面只是默认创建一个BindingRecyclerViewAdapter
大家千万不要把这个框架用到实际项目中,写个demo玩玩就行了
大家千万不要把这个框架用到实际项目中,写个demo玩玩就行了
那是你不会使用,你不妨说出问题出来,看是否真那么坑?
<ImageView
android:id="@+id/iv_title_one"
android:layout_width="55dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="?attr/selectableItemBackgroundBorderless"
binding:onClickCommand="@{viewModel.commandOne}"
android:src="@drawable/titlebar_music"/>
public BindingCommand commandTwo = new BindingCommand(new BindingAction() {
@Override
public void call() {
Log.d("TAG","click");
//itemPos.setValue(1);
}
});
无法触发点击事件?
commandOne
你xml绑定的是commandOne,而代码贴出来的是 commandTwo
贴错了,我代码里也是commandOne,后来我发先我xml是再
贴错了,我代码里也是commandOne,后来我发先我xml是再里面,无法触发点击事件,但是放到外面有可以触发,算是bug吗?
我们这都是放xml里可以正常触发没问题,可能是你漏了哪个步骤吧
Android x版本的 我用java写就可以 用kotlin写 就会出现错误Caused by: java.lang.ClassCastException: libcore.reflect.ParameterizedTypeImpl cannot be cast to java.lang.Class at me.goldze.mvvmhabit.base.BaseActivity.initViewDataBinding(BaseActivity.java:79) at me.goldze.mvvmhabit.base.BaseActivity.onCreate(BaseActivity.java:43)
如果您在使用中发现存在Bug,请在此提出,一同建造全网最优Android MVVM开发方案,感谢您的反馈!
一个recyclerview里包含着另一个recyclerview,我发现第二个recyclerview的ItemView 不能随着数据的改变而刷新
如果您在使用中发现存在Bug,请在此提出,一同建造全网最优Android MVVM开发方案,感谢您的反馈!