package com.android_mvc.framework.ui; import android.app.Activity; import android.content.Context; import android.os.Handler; import android.widget.Toast; /** * FW側でUIに関する便利メソッドを詰め込んだクラス。 * @author id:language_and_engineering * */ public class UIUtil { /** * 長時間のトーストを表示。 * 引数としてActivityが利用な場合であれば,いかなるスレッドからも表示可能。 */ public static void longToast(final Activity activity, final String s) { // 非同期処理中の別スレッドからも呼べるように activity.runOnUiThread(new Runnable(){ @Override public void run() { longToast( activity.getApplicationContext(), s ); } }); // NOTE: 別スレッドでUI操作をじかに呼んではいけないので // @see http://stackoverflow.com/questions/2837676/how-to-raise-a-toast-in-asynctask-i-am-prompted-to-used-the-looper } /** * 長時間のトーストを表示 */ public static void longToast(Context context, String s) { Toast.makeText(context, s, Toast.LENGTH_LONG).show(); } /** * 長時間のトーストを表示。 * 画面がない場合に別スレッドで呼びたい場合などに使う。 */ public static void longToastByHandler(Handler handlerMainThread, final Context context, final String s) { handlerMainThread.post(new Runnable(){ @Override public void run() { longToast( context, s ); } }); // http://stackoverflow.com/questions/6134013/android-how-can-i-show-a-toast-from-a-thread-running-in-a-remote-service } }