Как поднять тост в асинктюзке, мне предложено использовать петли
-
26-09-2019 - |
Вопрос
У меня есть задачи, завершенные асинктюдой в фоновом режиме. В какой-то момент мне нужно выдать тост, что что-то завершено.
Я пробовал, и я потерпел неудачу, потому чтоCaused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
Как я могу это сделать?
Решение
OnPostexecute - выполняет на бите UI или publishProgress()
; на вашем донбежке и
protected void onProgressUpdate(Integer... progress) {
}
http://developer.android.com/reference/android/os/asyncyctask.html.
Другие советы
Вы можете подражать внутри Doinbackground
Добавьте этот код, где вы хотите тосты появиться
runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(<your class name>.this, "Cool Ha?", Toast.LENGTH_SHORT).show();
}
});
Вы также можете использовать RunOnuithread Способ манипулировать вашим UI из фоновых нитей.
Если вы хотите использовать тост, вы должны использовать этот метод: onprogressuppdate ()
protected Integer doInBackground(Void...Params) {
int check_point = 1;
publishProgress(check_point);
return check_point;
}
protected void onProgressUpdate(Integer integers) {
if(integers == 1) {
Toast.makeText(classname.this, "Text", 0).show();
}
Если вы хотите отобразить тост из фоновой нити, вам придется позвонить в RunoNuithRead с Doinbackground. Я не верю, что есть другой путь.
Редактировать: Я беру это обратно. Я думаю, что вы можете реализовать onProgressuppdate, который работает на ните пользовательского интерфейса, чтобы показать тост и совершать звонки на публикациюПрогрогресс с Doinbackground.
Если вы хотите отобразить тост в Doinbackground, вы можете использовать его в методе onPostexute of Asynctask.
protected void onPostExecute(String file_url) {
Toast.makeText(getApplicationContext(),"Your Message", Toast.LENGTH_LONG).show();
pDialog.dismiss();//dismiss the progress dialouge
}