Я пытаюсь разработать для своего приложения функцию, которая извлекает текстовую строку из Интернета (вроде как в твиттере, но намного более простой) и отображает ее на экране в открывшемся окне. Пользователь видит большое поле с кнопкой обновления рядом с ним и небольшое пространство под обоими, где я хотел бы иметь небольшой монитор прогресса (просто TextView), который отображает «Обновление ...», как только кнопка обновления нажмите, а затем "Обновление успешно!" как только строка текста была успешно извлечена из Интернета и отображена. Это просто для того, чтобы убедить пользователя в том, что что-то действительно происходит, когда он нажимает кнопку.
После лота исследований я пришел к выводу, что способ обновить TextView - это использовать обработчик для выполнения исполняемого файла, который обновит текст в TextView. Итак, мой код выглядит так:
refreshbutton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View abc)
{
//display "Refreshing..."
refreshhandler.post(refreshingmsg);
/*Code to pull the string of text from the internet goes here (not shown)*/
//display "Refresh successul!"
successfulhandler.post(successfulmsg);
//clear the "Refresh successful" message after 2 seconds
clearhandler.postDelayed(clearmsg, 2000);
}
});
Я надеюсь, что это имеет смысл. Моя проблема в том, что все это происходит одновременно: я хочу, чтобы отобразилось сообщение «Обновление ...», ТОГДА телефон подключился к Интернету, чтобы найти строку текста для обновления, и ТОГДА для «Обновление успешно». msgstr "сообщение, отображаемое после успешного отображения интернет-строки. Но на самом деле происходит то, что ни одна из команд в методе onClick на самом деле не выполняется, пока телефон не извлечет сообщение из Интернета, поэтому сообщение «Обновить ...» вообще не отображается. Итак, что происходит на самом деле, когда пользователь нажимает кнопку, так это то, что в течение секунды или двух ничего не происходит (предположительно, потому что телефон занят извлечением строки из Интернета), а затем неожиданно отображается строка из Интернета вместе с сообщением «Обновить Успешные!».
Так почему это происходит? OnClick должен работать таким образом? Если так, есть ли обходной путь? Я не опубликовал свои операторы runnable и handler, потому что я не уверен, что это будет иметь какое-либо значение ... но если это поможет, тогда я могу опубликовать их!
Кроме того, из этого вы, вероятно, можете сказать, что я давно не занимался android (или даже java), но я стараюсь изо всех сил, поэтому, пожалуйста, будьте осторожны! Спасибо:)