0

次のシナリオであなたの助けが必要です。

3つのチェックボックスA、B、Cと変数aがあります。チェックボックスBをクリックすると、aの値は2のままになり、Aにチェックを入れると、これは3に変更され、選択を解除すると2に戻ります。

これを動的に取得するにはどうすればよいですか?

チェックボックスのチェック状態を変更した場合にのみ変数を変更するonCheckedChangeListenerを使用しています。

どんな助けでも大歓迎です。

いくつかのコード:

ChkBxAのコード:

    ChkBxA.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) 
    {
        if (buttonView.isChecked()) 
        {
            variable_a = 1;
        }
        else 
        {
            variable_a = 0;
        }
    }
});

ChkBxBコード:

ChkBxB.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) 
    {
        if (buttonView.isChecked()) 
        {
            if(variable_a == 1)
            {
                variable_b = 3;
            }
            else 
            {
                variable_b = 2;

            }
        }
        else 
        {
            variable_b = 0;
        }
    }
});

問題は、チェックボックスAの状態のときにvariable_aの値が変更されるため、variable_bの値はcheckedChangeListener内にあるため変更されないことです。したがって、これを克服するためのアドバイスは大歓迎です。

4

3 に答える 3

2

チェックされた状態に応じて値を計算する単一のメソッドを作成します。

void CalculateValues(bool CheckBoxA, bool CheckBoxB)
{
  variable_a = CheckBoxA ? 1 : 0;
  variable_b = CheckBoxB? (variable_a==1 ? 3 : 2) : 0;
}

ここで、両方のイベントハンドラーからこのメソッドを呼び出し、両方のチェックボックスのチェック状態を渡すだけです。実際、イベントハンドラー(呼び出し)は両方のチェックボックスで同じになります。ChkBxAからチェック済みの状態を取得する方法はわかりませんが、簡単だとしましょう。

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) 
{
  CalculateValues(ChkBxA.IsChecked(), ChkBxB.IsChecked() );
}
于 2012-12-31T13:31:19.043 に答える
0

以下の条件を書いてください...

if (isChecked()) //<<===buttonView remove
{
    if(variable_a == 1)
    {
           variable_b = 3;
     }
     else 
     {
           variable_b = 2;

     }
}
于 2012-12-31T13:25:12.703 に答える
0

あなたの質問は明確ではありませんが、以前の回答であなたのコメントを得た後、おそらく私はこれを解決する方法を見つけました。

を使用しstackて、現在のチェックボックス値を保存できます。TOSの値は、チェックボックスの選択値になります。適切なロジックを使用onCheckedChangeListener()して使用することにより、TOSの値を変更できます[usingpush()またはpop()]..この方法を使用して現在の選択または以前の選択を取得できると思います。

これは単なるアイデアです。ロジックを実装する必要があります:)幸運を祈ります!!

于 2012-12-31T13:44:52.880 に答える