2017-04-03 9 views
0

このエラーはアンドロイドのapi 14(4.0)で発生しましたが、 ?アンドロイド4.0以降でLooper.prepare()を呼び出していないスレッド内でハンドラを作成できません。

thread = new Thread(new Runnable() { 
       public void run() { 
        try { 
         //do some thing 
        } catch (Exception e) { 

        } finally { 

         runOnUiThread(new Runnable() { 

          @Override 
          public void run() { 
           //do some thing 
          } 

         }); 
        } 

       } 
      }); 

      thread.start(); 
+0

http://stackoverflow.com/questions/18856376/android-why-cant -i-create-a-handler-in-new-threadは、ソリューションと同様の問題です –

答えて

0

threadからトーストメッセージを表示することはできません。任意のUi要素を表示するには、アクビビティUIスレッドが必要です。

Toast.makeText(context, Message, Toast.LENGTH_LONG); 

ので、これは次のようになります。

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

またあなたの代わりにスレッド

のハンドラを使用することができます
Handler handler=new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     try { 
      //do some thing 
     } catch (Exception e) { 
      Toast.makeText(context, Message, Toast.LENGTH_LONG); 
     } finally { 
      //do work 
     } 
    } 
}, 1000); 
関連する問題