5

アプリでチェックボックスをボタンとして使用して、何かをオンまたはオフにします。しかし、アクション(ネットワークからファイルをロードする)は非同期タスクで行われるため、このように非同期タスクが正常に終了するまでチェックをオンにしたくありません

protected void onPostExecute(String result) {

            if(result==null) {
                return;
            }
            // loaded ok, turn on check mark
            MainActivity.mMp3Cb.setChecked(true);

問題は、あたかもユーザー入力であるかのように再び起動することsetChecked(true)ですOnCheckedChangeListener

これを回避する方法はありますか?または少なくともそれを検出しonCheckedChangedますか?

ありがとう

4

1 に答える 1

17

isPressed()ボタン ビュー オブジェクトのメソッドを使用できます。Android のトグル ボタンの例を次に示します。buttonView.isPressed()ユーザーがボタンをクリックした場合にのみ true になります。

@Override
public synchronized void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

    if (buttonView.isPressed()) {
        // human input  
    } else {
        // result of setChecked(boolean)
    }
}
于 2014-08-18T05:52:06.240 に答える