首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用Rx-Java时,Android视图在旋转后为空。

当使用Rx-Java时,Android视图在旋转后为空。
EN

Stack Overflow用户
提问于 2018-02-05 15:42:55
回答 1查看 570关注 0票数 1

我正在用Kotlin Android扩展访问所有视图,这些视图按预期工作,即使在屏幕旋转之后也可以正常访问。

当我试图访问Rx-Java可观测间隔内的视图时,问题就开始了,如下所示:

代码语言:javascript
复制
 var interval = Observable.interval(10, TimeUnit.SECONDS, Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())

interval.retry().subscribe { updateUi(); }

如果我在间隔之间旋转屏幕。下次updateUi()方法作为可观测值的一部分运行时,它中的视图将为null,应用程序将崩溃,但有以下例外:

io.reactivex.exceptions.OnErrorNotImplementedException: text_view不能为空

但是,如果我试图在可观测范围之外运行该方法,一切都将正常工作。

我知道用findViewById()访问视图将正确地检索视图,但这就克服了拥有kotlin-android扩展的缺点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-05 15:48:52

在旋转时,屏幕再次被设置,所以旧视图消失了。

您必须在subscribe()调用中取消订阅(由onStop()调用返回)。

也许你应该尝试一下安卓架构的ViewModel。我最近一直在用它,我真的很喜欢它。这也能解决你的问题。https://medium.com/google-developers/viewmodels-a-simple-example-ed5ac416317e

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48626207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档