0

在以下情况下,我需要您的帮助。

我有三个复选框 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

尽管您的问题尚不清楚,但是在您在以前的答案中发表评论后,我可能找到了解决此问题的方法。

您可以使用 astack来存储当前的复选框值。TOS的值将是您的复选框选择值。通过使用onCheckedChangeListener()和使用正确的逻辑,您可以更改 TOS [使用push()pop()] 的值。我认为您可以使用这种方式获得当前选择或先前选择。

这只是一个想法,你必须实现逻辑:) 祝你好运!

于 2012-12-31T13:44:52.880 回答
0

写下条件...

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

     }
}
于 2012-12-31T13:25:12.703 回答