从互联网上提取数据时出现错误

I get an error when I pull data from the internet

我可以获取第一个片段中的数据,但我无法获取第二个片段中的数据

W/System.err: android.os.NetworkOnMainThreadException
            at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1565)
    W/System.err:     at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:115)
            at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103
            at java.net.InetAddress.getAllByName(InetAddress.java:1152)
    W/System.err:     at okhttp3.Dns$Companion$DnsSystem.lookup(Dns.kt:49)
            at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.kt:164)
            at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.kt:129)
    W/System.err:     at okhttp3.internal.connection.RouteSelector.next(RouteSelector.kt:71)
            at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:213)
            at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:108)
    W/System.err:     at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:76)
            at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:245)
    W/System.err:     at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:100)
    W/System.err:     at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:96)
    W/System.err:     at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:100)
            at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:100)
    W/System.err:     at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:100)
    W/System.err:     at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:197)
            at okhttp3.internal.connection.RealCall.execute(RealCall.kt:148)
    W/System.err:     at retrofit2.OkHttpCall.execute(OkHttpCall.java:188)
            at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:45)
            at io.reactivex.Observable.subscribe(Observable.java:12246)
            at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:34)
            at io.reactivex.Observable.subscribe(Observable.java:12246)
            at io.reactivex.internal.operators.observable.ObservableObserveOn.subscribeActual(ObservableObserveOn.java:45)
    W/System.err:     at io.reactivex.Observable.subscribe(Observable.java:12246)
            at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
    W/System.err:     at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
    W/System.err:     at android.os.Handler.handleCallback(Handler.java:883)
            at android.os.Handler.dispatchMessage(Handler.java:100)
            at android.os.Looper.loop(Looper.java:214)
    W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:7356)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

我认为它与线程有关,但我找不到解决方法。

class MovieDetailViewModel(application: Application) : BaseViewModel(application) {
    private val movieAPIService = MovieAPIService()
    private val disposable = CompositeDisposable()
    val oneMovie = MutableLiveData<Movie>()

    fun loadData(id: Int){
        getMovie(id)
    }

    private fun getMovie(id: Int) {
        println(id)
        disposable.add(movieAPIService.getMovie(id)
            .observeOn(Schedulers.io())
            .subscribeOn(AndroidSchedulers.mainThread())
            .subscribeWith(object : DisposableObserver<FirstModel2>(){
                override fun onComplete() {

                }

                override fun onNext(t: FirstModel2) {
                    val movie : OneMovie = t.data
                    oneMovie.value = movie.movie
                }

                override fun onError(e: Throwable) {
                    e.printStackTrace()
                }

            }))
    }
}

我在第一个fragment中使用api在recyclerview中显示电影,当我点击它时,我想切换到第二个fragment并使用id显示电影的详细信息又是电影

您在 observeOn 和 subscribeOn 中混合了调度程序。交换它们。