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

从 asyncTask 中的异常访问视图的问题

从 asyncTask 中的异常访问视图的问题

慕标5832272 2021-10-20 16:09:53
我遇到了一个问题,我认为我无法从 asyncTask 访问 ListView实际上,我真的不知道这里的真正问题是让我告诉你发生了什么我有一个活动正在执行 AsyncTask 并创建HttpURLConnection. 有时我会收到异常 ( ProtocolException),因为流意外结束。因此,我为此异常创建了一个处理程序,该处理程序调用活动类中的函数或方法以向用户显示消息这是一张图片,让您了解我的项目是什么。每当抛出异常时,这里的问题都会调用我用来将文本添加到 listView 的相同函数/方法,但是在它调用 listView 之后消失了,但是当我手动最小化软键盘时,一切都会变好。我的班级结构是public class MainActivity extends AppCompatActivity{    protected void onCreate(Bundle savedInstanceState)    {        addMessageToListView()//works fin here    }    protected void addMessage(String message, int userMessage, ListView listView) // the function    {        try        {            messages.add(new Message(message,userMessage));            MessagesAdapter messagesAdapter = new MessagesAdapter(messages, getBaseContext());            messagesAdapter.notifyDataSetChanged();            listView.setAdapter(messagesAdapter);        }        catch (Exception exception)        {        }    }     private class HttpPostAsyncTask extends AsyncTask<String, Void, String>    {        ...        @Override        protected void onPostExecute(String result)        {            try            {                addMessageToListView()//works fin here            }            catch (Exception exception)            {            }        }        protected String doInBackground(String... params)        {            String result = "";            for (int i = 0; i <= 0; ++i)            {                result = this.invokePost(params[i], this.postData);            }            return result;        }        private String invokePost(String requestURL, HashMap<String, String> postDataParams)// called from doInBackground        {        try            {                addMessageToListView()//works fin here            }            catch (Exception exception)            {                addMessageToListView()//not orking here            }        }    }}我不知道如何解释更多。
查看完整描述

2 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

您只能在应用程序的主线程中更改视图。doInBackground 不在您的应用程序的主线程中运行。


查看完整回答
反对 回复 2021-10-20
  • 2 回答
  • 0 关注
  • 127 浏览

添加回答

举报

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