2021.2.1 Coskx Lab
非UIスレッドでToastを表示したい。
UIスレッドでToastを表示するときは
Toast.makeText(mContext, "Hello from Toast", Toast.LENGTH_LONG).show();
あるいは,strings.xmlに登録しておいた文字列なら
Toast.makeText(mContext, R.string.hello, Toast.LENGTH_LONG).show();
で表示できます。
しかし,非UIスレッドでToastを表示するときは,
import android.os.Handler;
のもとで
または
でできます。ただし,mContextは事前にgetMainContext()などで用意しておいてください。
なお時間をずらして実行したい場合は
または
でできます。
SimpleToast.javaのダウンロード
SimpleToastは非UIスレッドからToastを表示する便利クラスです。
使用方法
このクラスのインスタンスを作成してから,Toast表示を要求するように使います。
SimpleToast mSimpleToast;
UIスレッドで使用されるContext mContextが決定してからインスタンスを作成します。
mSimpleToast = new SimpleToast(mContext);
Toast表示を要求する方法は2つあります。
(1)ダイレクト 通常のToastと同じように使います。
続けて要求するとキューに入って,順に表示されます。
mSimpleToast.displaySimpleToast_direct("Hello!",Toast.LENGTH_LONG);
または
mSimpleToast.displaySimpleToast_direct(R.string.hello,Toast.LENGTH_LONG);
(2)排他的に表示するときに使います。
前の表示が残っていると表示要求は無視されます。
mSimpleToast.displaySimpleToast("Hello!",Toast.LENGTH_LONG);
または
mSimpleToast.displaySimpleToast(R.string.hello,Toast.LENGTH_LONG);
キャンセルができるので,表示要求直前にキャンセル要求すれば,前の表示を消して,新しい表示を行います。
このキャンセルは,displaySimpleToastに対してだけ効果があります。
mSimpleToast.cancelSimpleToast();
λ式を使うと定型のHandlerのコーディングが簡単になります。 通常のコーディング
λ式を使ったコーディング