Android - 動的な変更後にメニューボタンをどのように再描画しますか?

いくつかのボタンが付いたシンプルなポップアップメニューがあります。 1つのボタンが無効になります。 1秒後に有効にする必要があります。下のコードはボタンを有効にしているようですが、フォーム上の別のボタンをクリックするまで再描画されません。

onCreate()メソッドでは次のようになります。

    Timer timer = new Timer();
    timer.schedule(new UpdateTimeTask(), 1000, 200);

UpdateTimeTaskメソッドでは、次のようになります。

    public void run() {
           ((Button) findViewById(R.id.myButton)).setEnabled(true);
       }

ボタンが有効になっていると、なぜ自動的にそれ自体を再描画しないのですか?別のボタンをクリックするまで無効になっているように見えます。それが有効になっているように突然ポップアップします。

有効行の直後にある "invalidate()"も機能しません。

1
私はボタンを無効にして、その描画可能な状態をリフレッシュしようとしましたが、運はありませんでした。 RelativeLayout全体を無効にしようとしましたが、フリーズして何もクリックできません。私はボタンとレイアウトで考えることができるすべての無効/リフレッシュの組み合わせを試しました。
追加された 著者 FoppyOmega,
無効にしてから更新します。 myButton.refreshDrawableState();
追加された 著者 Arslan,

1 答え

I ended up using a Runnable instead of a Timer. This article was a huge help: http://developer.android.com/resources/articles/timed-ui-updates.html

私はinvalidateまたはrefreshDrawableStateを使用する必要はありませんでした。これは、すべて同じUIスレッドで行われています。

0
追加された