无法在尚未为天气应用程序调用 Looper.prepare() 的线程内创建处理程序

我正在为一个学校项目制作一个天气应用程序,但遇到了一个小问题。我看到很多人问这个问题,我尝试了很多答案,但对我没有用。我对这些东西真的很陌生,所以我可能没有正确地实现这些答案。这是我的代码:


private void getWeatherInformation() {

    compositeDisposable.add(mService.getWeatherByLatLng(String.valueOf(APIKljuc.current_location.getLatitude()),

            String.valueOf(APIKljuc.current_location.getLongitude()),

            APIKljuc.APP_ID,

            "metric")

            .subscribeOn(Schedulers.io())

            .subscribe(new Consumer<WeatherResult>() {

                @Override

                public void accept(WeatherResult weatherResult) throws Exception {


                    //Slika

                    Picasso.get().load(new StringBuilder("https://openweathermap.org/img/w/")

                            .append(weatherResult.getWeather().get(0).getIcon())

                    .append(".png").toString()).into(img_weather);


                    //Ucitavanje informacija

                    txt_city_name.setText(weatherResult.getName());

                    txt_description.setText(new StringBuilder("Weather in")

                    .append(weatherResult.getName()).toString());

                    txt_temperature.setText(new StringBuilder(

    );

}

我在网上看到的最推荐的答案是:


  activity.runOnUiThread(new Runnable() {

       public void run() { 

            Toast.makeText(activity, "Hello", Toast.LENGTH_SHORT).show();

    }

  });

我用它来替换: new Consumer() {etc..});


我不明白我需要用什么替换“活动”,它是红色的,我的代码不会编译..


慕虎7371278
浏览 69回答 1
1回答

慕莱坞森

用它来移动线程&nbsp; .observeOn(AndroidSchedulers.mainThread())我看到你用.subscribeOn(Schedulers.io())如果要像 setText() 那样操作视图,则需要移至 mainThread.observeOn(AndroidSchedulers.mainThread()).subscribeOn(AndroidSchedulers.mainThread()).subscribe(new Cus)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java