mucchinのAndroid戦記

UI表示以外の他タスク(イベントリスナ等)からのGUI表示変更方法

初心者以上のAndroid開発者にとっては今さら?なネタかもしれませんが、本日は画面上のViewオブジェクトの活性不活性の切替等を、Activityのライフサイクル等のUI表示タスク以外のタスクから行いたいときの方法です。

例えば、ボタンクリック時のイベントリスナーであれば、ボタンの表示非表示の切替処理を行ってもうまくいくかもしれませんが、BluetoothやSIP受信等のイベントリスナーから同じような切替処理を行っても、画面が崩れたり上手く動かない場合があります。
このようなときは、Handlerというインスタンスを経由して処理を行ってやればOKです。
onCreate等で、以下のようにHandler型インスタンスを作成しておきます。


Handler handler = new Handler();
そして、ボタンの表示非表示や活性不活性の切替を行いたい場所では、以下のようなコードを記述します。
handler.post(new Runnable() {
    public void run() {
        button.setEnabled(false);
        return;
    }
});
上記のrunメソッド内のコードは、あくまでもサンプルですので、適宜書き換えて下さい。
画面項目の表示切替が上手くいかないときは、上記のようにHanlerを経由してみてください。

今回は以上です。