0

トーストがクラス内で機能しない、

ここに私のコードがあります:

public class ToastClass {

public ToastClass (Context activity){   
        callToast(activity);
    }   
    public void callToast(Context activity){
            Toast.makeText(activity, "success", Toast.LENGTH_SHORT).show();
    }   
}

エラー私はこれを取得しています、

 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

クラス内で行う必要がある方法はありますか。

ありがとう。

4

3 に答える 3

6

問題はToast、メイン スレッドで s を作成して表示する必要があることです。Toast.makeText(...)他のスレッド内では許可されていません。

Toast だけを遅らせたい場合は を使用します。それ以外の場合は、Toast にHandler任意のViewインスタンスを使用できますpostDelay(Runnable, long)

あなたの場合、Activityインスタンスがあるので、そのメソッドを呼び出すことができますrunOnUiThread(Runnable)

activity.runOnUiThread(new Runnable() {
    @Override
    public void run() {
       Toast.makeText(activity, "success", Toast.LENGTH_SHORT).show();
    }
});
于 2013-02-23T11:43:35.670 に答える
2

試す:

activity.runOnUiThread(
 new Runnable(){
  @Override
  public void run(){
   Toast.makeText(activity, "success", Toast.LENGTH_SHORT).show();
  }
);
于 2013-02-23T11:45:20.193 に答える
1

使用する

ClassName.this活動の代わりに

于 2013-02-23T12:14:29.593 に答える