
У меня проблема: я не могу получить доступ к ListView из asyncTask
На самом деле, я действительноне знаю настоящей проблемы здесь Позвольте мне показать вам, что происходит
У меня есть действие, которое выполняет AsyncTask и создает HttpURLConnection
.Иногда я получаю исключение (ProtocolException
), потому что поток неожиданно заканчивается.Итак, я создал обработчик для этого исключения, который вызывает функцию или метод внутри класса действия для отображения сообщения пользователю
Вот изображение, чтобы вы поняли, что такое мой проект.
image
проблема здесь, когда выдается исключение, вызывается та же функция / метод, который я использую для добавления текста в 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
}
}
}
}
Я не знаю, как объяснить на самом деле.