java - 如何修复无法在未调用 Looper.prepare() 的线程内创建处理程序
问题描述
为什么我得到:Can't create handler inside thread that has not called Looper.prepare()
这里的错误?
public class MovieInterface extends AsyncTask<String, Void, MovieResultsPage> {
public Activity activity;
MovieInterface(Activity context) {
this.activity = context;
}
public void handleUpcomingMovies() {
}
@Override
protected MovieResultsPage doInBackground(String... strings) {
TmdbMovies movies = new TmdbApi("d2e5d02fe295efc00bad8da4dc384edf").getMovies();
MovieResultsPage upcomingMovies = movies.getUpcoming(null, 1, "IN");
int totalpages = upcomingMovies.getTotalPages();
return upcomingMovies;
}
@Override
protected void onPostExecute(final MovieResultsPage movieDbs) {
super.onPostExecute(movieDbs);
ArrayList<MovieClass> mymovielist = new ArrayList<>();
for (MovieDb movieResult : movieDbs.getResults()) {
mymovielist.add(new MovieClass(movieResult.getTitle(), movieResult.getOverview()));
}
MovieAdapter movieClassArrayAdapter = new MovieAdapter(activity, R.layout.movie_list_item, mymovielist);
((ListView) activity.findViewById(R.id.upcomingMoviesList)).setAdapter(movieClassArrayAdapter);
}
方法调用:
MovieInterface movieInterface = new MovieInterface(this) ;
movieInterface.execute() ;
正如其他类似问题的答案所暗示的那样,我没有在后台方法中进行任何 UI 更新。但仍然收到错误。
我是 android 和 java 的新手。我该如何解决 ?
解决方案
new Handler(Looper.getMainLooper())
文档中的更多详细信息。
推荐阅读
- javascript - 如何从其键值对更改对象的值并将这个新项目迭代地添加到同一个对象?
- python - 根据字典中的值列表在 pandas 中创建一个新列
- sql - count(*) 并且没有选择相同的日期
- nlp - 安装 ktrain 时,出现错误:无法为使用 PEP 517 且无法直接安装的 h5py 构建轮子。有什么解决办法吗?
- r - Rowwise 在数据框列中查找最常见的术语并计算出现次数
- quarkus - 如何在 Quarkus 中使用 Jasypt 加密和解密数据库密码
- android - 在方向更改时将 Android 视图(布局)移动到特定点(仅旋转一些视图而不是整个活动)
- robotframework - Robot Framework如何从列表变量中获取值
- html - 在省电模式下,位于 HTML5 视频上的元素在 iOS 上是不可见的
- apache-kafka - Apache Kafka 和 Zookeeper [错误] [未指定路径]