~ To be, or not to be, or to think about it tomorrow. ~ 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) |
|