Looper.prepare() を呼び出さなかったスレッド内でハンドラーを作成できません 質問する

Looper.prepare() を呼び出さなかったスレッド内でハンドラーを作成できません 質問する

次の例外はどういう意味ですか? どうすれば修正できますか?

コードは次のとおりです:

Toast toast = Toast.makeText(mContext, "Something", Toast.LENGTH_SHORT);

これは例外です:

java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
     at android.os.Handler.<init>(Handler.java:121)
     at android.widget.Toast.<init>(Toast.java:68)
     at android.widget.Toast.makeText(Toast.java:231)

ベストアンサー1

Toast.makeText(...)UI スレッドから呼び出す必要があります:

activity.runOnUiThread(new Runnable() {
  public void run() {
    Toast.makeText(activity, "Hello", Toast.LENGTH_SHORT).show();
  }
});

これは以下からコピー&ペーストしたものです別の(重複した)SO回答

おすすめ記事