为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕虎7371278 2022-05-25 09:39:03
我正在为一个学校项目制作一个天气应用程序,但遇到了一个小问题。我看到很多人问这个问题,我尝试了很多答案,但对我没有用。我对这些东西真的很陌生,所以我可能没有正确地实现这些答案。这是我的代码: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..});我不明白我需要用什么替换“活动”,它是红色的,我的代码不会编译..
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

用它来移动线程


  .observeOn(AndroidSchedulers.mainThread())

我看到你用


.subscribeOn(Schedulers.io())

如果要像 setText() 那样操作视图,则需要移至 mainThread


.observeOn(AndroidSchedulers.mainThread())

.subscribeOn(AndroidSchedulers.mainThread())

.subscribe(new Cus)


查看完整回答
反对 回复 2022-05-25
  • 1 回答
  • 0 关注
  • 67 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信