Androidには、Toastという機能がある。これは簡単なメッセージをユーザーに表示するだけの機能である。ユーザが見逃す可能性もあるので、重要なメッセージの表示には使用できないが、Nofificationとの併用や、何かを削除した時に削除終了をユーザに明確に伝える時に使用する。

android.widget.Toast

表示する時間は、長く表示と、短く表示が用意されている。
Androidのソースコードを見ていると、ほとんどのアプリケーションが、LENGTH_SHORTを使用しているが、個人的に読み取れない事が多いので、LENGTH_LONGを使用している。

  • LENGTH_LONG
  • LENGTH_SHORT (Default)

使い方は、非常に簡単で、以下の1行で画面に表示をさせる事ができるため、通常のメッセージ表示のほかに、Broadcastのテスト等に使用すると便利である。


Toast.makeText(this, R.string.short_notification_text,
Toast.LENGTH_SHORT).show();

Toastが固まる時

SDKを見てもらうと、Toast.cancel()が存在する。ほっておけばすぐに消えてしまうToastにわざわざこのようなメソッドが腰囲されている理由は、Toastを表示している間にもう一度Toastを表示してはいけないということである。

マルチスレッド化したプログラムで各スレッドから、画面に報告用のToastを表示すると、タイミングによっては、Toastを2回呼んでしまう可能性がある。

このような時は、以下のようなToastMasterクラスを作成して使用すれば良い


public class ToastMaster extends Toast{
private static Toast sToast = null;
public ToastMaster(Context context) {
super(context);
}
@Override
public void show() {
ToastMaster.setToast(this);
super.show();
}
public static void setToast(Toast toast) {
if (sToast != null)
sToast.cancel();
sToast = toast;
}
public static void cancelToast() {
if (sToast != null)
sToast.cancel();
sToast = null;
}
}

使用する時


ToastMaster.makeText(this, text, ToastMaster.LENGTH_SHORT).show();

このソースは、Androidのソースコードにあった物を切りだしたものです。