Kotlin android扩展片段视图null

Kotlin android扩展片段视图null,android,kotlin,kotlin-android-extensions,Android,Kotlin,Kotlin Android Extensions,我有一个在baseview界面中处理错误和progressbar的系统。 我在片段和活动中实现接口,并通过覆盖的getter传递必要的视图,如 override val mContentView: View get() = contentView 其中contentView是通过kotlin android扩展提供的id为“contentView”的视图。contentView是Snackbar显示错误所需的片段的根视图 在我的一个观点中,我有一个例外 contentView不

我有一个在baseview界面中处理错误和progressbar的系统。 我在片段和活动中实现接口,并通过覆盖的getter传递必要的视图,如

    override val mContentView: View
    get() = contentView
其中contentView是通过kotlin android扩展提供的id为“contentView”的视图。contentView是Snackbar显示错误所需的片段的根视图

在我的一个观点中,我有一个例外

contentView不能为null

当视图膨胀并且拥有它的片段可见时

奇怪的是,如果我在onViewCreated中访问contentView,错误就会消失

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    contentView.let {

    }

}
有人能解释一下发生了什么事吗

ps1:我正在使用RxJava2访问视图,但它在Rxandroids主线程上

ps2:一个可能的提示可能是异常堆栈跟踪是一个警告而不是一个错误(未在logcat级别的错误或调试中显示)

ps3:完整堆栈跟踪

02-25 11:29:45.814 27055-27055/com.beguchi.android.peyk W/System.err:io.reactivex.exceptions.OnErrorNotImplementedException:contentView不能为null
02-25 11:29:45.814 27055-27055/com.beguchi.android.peyk W/System.err:at io.reactivex.internal.functions.functions$OnErrorMissingConsumer.accept(functions.java:704)
02-25 11:29:45.814 27055-27055/com.beguchi.android.peyk W/System.err:at io.reactivex.internal.functions.functions$OnErrorMissingConsumer.accept(functions.java:701)
02-25 11:29:45.814 27055-27055/com.beguchi.android.peyk W/System.err:at io.reactivex.internal.observer.LambdaObserver.onError(LambdaObserver.java:77)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at io.reactivex.internal.observer.LambdaObserver.onNext(LambdaObserver.java:67)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at io.reactivex.internal.operators.observed.observeObserveon$observeObserveon.drainNormal(observeObserveon.java:200)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at io.reactivex.internal.operators.observeable.observeObserveon$observeObserveon.run(observeObserveon.java:252)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at-android.os.Handler.handleCallback(Handler.java:790)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at-android.os.Handler.dispatchMessage(Handler.java:99)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at-android.os.Looper.loop(Looper.java:164)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at-android.app.ActivityThread.main(ActivityThread.java:6494)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at java.lang.reflect.Method.invoke(本机方法)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:原因:java.lang.IllegalStateException:contentView不能为空
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:at com.beguchi.android.peyk.userInterfaces.main.idle.IdleFragment.getMContentView(IdleFragment.kt:32)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:com.beguchi.android.peyk.scafolding.general.BaseView$DefaultImpls.renderError(BaseView.kt:24)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:at com.beguchi.android.peyk.scafolding.general.BaseFragmentView.renderError(BaseFragmentView.kt:13)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:at com.beguchi.android.peyk.userInterfaces.main.idle.IdleFragment.renderError(IdleFragment.kt:102)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:com.beguchi.android.peyk.scafolding.general.BaseView$DefaultImpls.renderCommon(BaseView.kt:18)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:at com.beguchi.android.peyk.scafolding.general.BaseFragmentView.renderCommon(BaseFragmentView.kt:13)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:at com.beguchi.android.peyk.userInterfaces.main.idle.IdleFragment.render(IdleFragment.kt:83)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:at com.beguchi.android.peyk.userInterfaces.main.idle.IdlePresenter$bindObservables$3.accept(IdlePresenter.kt:48)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:at com.beguchi.android.peyk.userInterfaces.main.idle.IdlePresenter$bindObservables$3.accept(IdlePresenter.kt:15)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:at io.reactivex.internal.observer.LambdaObserver.onNext(LambdaObserver.java:63)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:。。。10多
onCreateView()
a
getView()
中的为空,请参阅。因此,在
onViewCreated()
中初始化视图,或编写
view.contentView….


另外,在前面的
中使用
let
contentView?。让{}
您在Kotlin合成扩展中引用的contentView,它只提供对视图对象的引用(在您的案例内容视图中)

如果在创建布局或视图之前访问此对象,它将返回null


现在是片段,在onViewCreated()中创建视图(生成或初始化)。因此,您的contentView已创建(已初始化)

如果您得到一个异常,您也会得到一个堆栈跟踪。C
 02-25 11:29:45.814 27055-27055/com.beguchi.android.peyk W/System.err: io.reactivex.exceptions.OnErrorNotImplementedException: contentView must not be null
02-25 11:29:45.814 27055-27055/com.beguchi.android.peyk W/System.err:     at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:704)
02-25 11:29:45.814 27055-27055/com.beguchi.android.peyk W/System.err:     at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept(Functions.java:701)
02-25 11:29:45.814 27055-27055/com.beguchi.android.peyk W/System.err:     at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java:77)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:67)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:200)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:252)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:109)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at android.os.Handler.handleCallback(Handler.java:790)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:99)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at android.os.Looper.loop(Looper.java:164)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6494)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
02-25 11:29:45.815 27055-27055/com.beguchi.android.peyk W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err: Caused by: java.lang.IllegalStateException: contentView must not be null
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:     at com.beguchi.android.peyk.userInterfaces.main.idle.IdleFragment.getMContentView(IdleFragment.kt:32)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:     at com.beguchi.android.peyk.scafolding.general.BaseView$DefaultImpls.renderError(BaseView.kt:24)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:     at com.beguchi.android.peyk.scafolding.general.BaseFragmentView.renderError(BaseFragmentView.kt:13)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:     at com.beguchi.android.peyk.userInterfaces.main.idle.IdleFragment.renderError(IdleFragment.kt:102)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:     at com.beguchi.android.peyk.scafolding.general.BaseView$DefaultImpls.renderCommon(BaseView.kt:18)
02-25 11:29:45.816 27055-27055/com.beguchi.android.peyk W/System.err:     at com.beguchi.android.peyk.scafolding.general.BaseFragmentView.renderCommon(BaseFragmentView.kt:13)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:     at com.beguchi.android.peyk.userInterfaces.main.idle.IdleFragment.render(IdleFragment.kt:83)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:     at com.beguchi.android.peyk.userInterfaces.main.idle.IdlePresenter$bindObservables$3.accept(IdlePresenter.kt:48)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:     at com.beguchi.android.peyk.userInterfaces.main.idle.IdlePresenter$bindObservables$3.accept(IdlePresenter.kt:15)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:     at io.reactivex.internal.observers.LambdaObserver.onNext(LambdaObserver.java:63)
02-25 11:29:45.817 27055-27055/com.beguchi.android.peyk W/System.err:   ... 10 more