0

私の主な活動では、ボタンにリンクされたメソッドがあり、ボタンが押されたときに無効にする必要があり、HTTP 要求が行われ、メソッドが終了した後にボタンを再度有効にする必要があります。

public void onClick(View view) {        
    Button button = (Button) findViewById(R.id.my_button);
    button.setEnabled(false);
        button.setTextColor(Color.GRAY);
    try {
        // make HTTP request
    } catch (IOException e) {
        // error
    } finally {
        button.setEnabled(true);
        button.setTextColor(Color.GRAY);
    }
}

したがって、通常、ボタンをクリックすると色が変わるはずです。次に、タイムアウトになるリクエストが発生するのを待ちます。したがって、3 秒間待ってから、ボタンの色が元に戻るはずです。

残念ながら、メソッドが終了するまで、色/ボタンは一度も更新されません。その理由は何ですか?それはどのように適切に行われますか?

4

1 に答える 1

3

AsyncTaskを使用して HTTP 呼び出しを行い(メソッド doInBackground ( ) に配置)、メソッドonPostExecute()でボタンを再度有効にするコードを配置します。

于 2012-12-31T14:31:57.677 に答える