Вы не можете вносить изменения в элемент пользовательского интерфейса в потоках без пользовательского интерфейса. onClick
будет выполняться в потоке пользовательского интерфейса, но поскольку вы порождаете Thread
внутри onClick
, элементы, не относящиеся к пользовательскому интерфейсу, не могут управляться изнутри этого Thread
. Переместите ваши AlertDialog
и ProgressDialog
вызовы непосредственно перед порождением нового Thread
.
Кроме того, как подсказывает @lightblade, если вам нужно выполнить какое-то действие, требующее интенсивной фоновой обработки и манипулирования пользовательским интерфейсом на основе этой обработки, вам следует использовать AsyncTask
s. Он предоставляет методы, которые можно переопределить для предварительной обработки, фактической обработки, последующей обработки и прогресса обновления.