【Android開発】Can’t toast on a thread that has not called looper.prepare()エラーの解決策
表題のエラーの解決策です。
原因としては、本来Toastはメインスレッドでのみ実行できる仕様ですが、サブスレッドで実行してしまっていることです。
解決策はHandlerを使ってメインスレッドで実行するように変更すればOKです。
以下、具体例です。
修正前
1 | ExecutorService executor = Executors.newSingleThreadExecutor(); |
修正前
1 | final Handler handler = new Handler(); |
handler.postの処理はnew Handler()したスレッドで実行されるのでnew Handler()はメインスレッドで実行する必要があります!
Android開発は非同期処理が鬼門ですよね、、
おわり
【Android開発】Can’t toast on a thread that has not called looper.prepare()エラーの解決策
https://reon777.com/2021/03/08/Cant-toast-on-a-thread-that-has-not-called-looper-prepare/