gpt4 book ai didi

android - 从 AsyncTask 单独线程访问 fragment 对象

转载 作者:行者123 更新时间:2023-11-29 18:54:33 24 4
gpt4 key购买 nike

我正在从一个 fragment 中调用一个 asyncTask 来做一些网络。当它运行时,我需要能够禁用 fragment 中的按钮,直到 AsyncTask 调用 onPostExecute。

我唯一的问题是我无法从 doInBackground 访问这样的按钮:

Button mButtom = mActivity.findViewById(R.id.testButton);

它带来了:

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalStateException: The current thread must have a looper!

最佳答案

我们有一个名为 runOnUIThread 的函数

@Override protected String doInBackground(String... strings) {
activity.runOnUiThread(new Runnable() {
@Override public void run() {
//do your action
}
});
return "";
}

关于android - 从 AsyncTask 单独线程访问 fragment 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50165962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com