|
~ To be, or not to be, or to take a lunch anyway. ~ null-i.net |
| AndroidJava/トーストをたくさん作る | |
|
無駄にトーストを、大量に作ってみたくなる(2019-04-14) Toastっていうのは、何かアプリで作業したタイミングで 今回の課題としては以下の2つです。
トーストが連打される事態を許容するのかどうかは、また別として... Toast.makeText(getApplicationContext(), "とーすと!", Toast.LENGTH_LONG).show(); このToastですが、 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() UIスレッドって単語を初めて聞いた方はWeb検索して頂くとして...
それらを踏まえた例が以下 private Toast toast; // 変数として前回分を保持する
void setToast2UI(String toast_message) {
if(toast != null) toast.cancel(); // 前回分があれば消す。
// この呼び元が worker thread の場合は UI thread へ渡す
runOnUiThread(new Runnable() {
String toast_message2;
Runnable setToast(String str) {
toast_message2 = str;
return this;
}
@Override
public void run() { // Toast を呼ぶ
toast = Toast.makeText(getApplicationContext(), "", Toast.LENGTH_LONG);
toast.setText(toast_message2);
toast.show();
}
}.setToast(toast_message)); // setToast 経由で toast_message を渡す
}
runOnUiThread でUIスレッドへ処理を渡しています。 Threadに自分で欲しい任意の引数を渡す(今回はtoast_message) |
|