16

Android で Toast を作成して表示すると、連続して表示されます。問題は、いくつかのフィールドをチェックするボタンがあり、ユーザーが間違ったデータを入力するとトーストが表示されることです。ユーザーがボタンを繰り返しタッチすると、トーストが蓄積され、メッセージは数秒間消えません。

それを避ける最善の方法はどれですか?

  • 新しい Toast を作成する前に、前回の Toast への参照を保存して削除してもよろしいですか?
  • すべてのメッセージに同じトーストを使用する必要がありますか?
  • 新しい Toast を作成して表示する前に、すべての Application Toast をクリアする方法を使用できますか?
4

4 に答える 4

36

cancel()のメソッドを使用してToast、表示中のトーストを閉じることができます。

変数を使用して、表示するすべての Toast への参照を保持し、cancel()別の Toast を表示する前に呼び出すだけです。

private Toast mToast = null; // <-- keep this in your Activity or even in a custom Application class

//... show one Toast
if (mToast != null) mToast.cancel();
mToast = Toast.makeText(context, text, duration);
mToast.show();

//... show another Toast
if (mToast != null) mToast.cancel();
mToast = Toast.makeText(context, text, duration);
mToast.show();

// and so on.

次のように、それを小さなクラスにラップすることもできます。

public class SingleToast {

    private static Toast mToast;

    public static void show(Context context, String text, int duration) {
        if (mToast != null) mToast.cancel();
        mToast = Toast.makeText(context, text, duration);
        mToast.show();
    }
}

次のようにコードで使用します。

SingleToast.show(this, "Hello World", Toast.LENGTH_LONG);

///

于 2013-09-07T18:53:50.357 に答える