如何在复选框状态更改之前检查

时间:2014-02-21 07:22:29

标签: android checkbox

我想在CheckBox的状态发生变化之前检查一下。如果用户已登录,请更改状态并将数据发布到服务器。否则,保持状态并显示登录活动。

OnCheckedChangeListener不合适。在CheckBox中是否有PreferenceChangeListener(返回false以保持状态)。

或其他方法。

谢谢!

更新
OnClickListener为我工作。

@Override
public void onClick(View view) {
        boolean isChecked = checkBox.isChecked();
        checkBox.setChecked(!isChecked);
        if (loggedIn) {
            checkBox.setChecked(isChecked);
            // push data to server
         } else {
            // show log-in activity
        }
}

3 个答案:

答案 0 :(得分:1)

如果我没有误解你的问题,你仍然可以使用OnCheckedChangeListener来实现它:

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    if (isLogin) {
        buttonView.setChecked(true);
        Toast.makeText(this, "Sending data", Toast.LENGTH_SHORT).show();
    } else {
        buttonView.setChecked(false);
        Toast.makeText(this, "Show login activity", Toast.LENGTH_SHORT)
            .show();
    }
}

答案 1 :(得分:0)

您可以执行以下操作:

CheckBox repeatChkBx = ( CheckBox ) findViewById( R.id.repeat_checkbox );
repeatChkBx.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if ( isChecked )
        {
            // perform logic
        }

    }
});

或者如果您只想查看是否已选中该复选框,则可以使用此

CheckBox checkBox = (CheckBox)v.findViewById(R.id.Checkbox);
        checkBox.setChecked(!checkBox.isChecked());

答案 2 :(得分:0)

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

 // awesome code you may use
    // if (isChecked)
    // (buttonView.getId() == R.id.check1 ? check2 : check1)
    // .setChecked(false);



//Or use the code below
    if (isChecked) {
        switch (buttonView.getId()) {

        case R.id.check1:

            check2.setChecked(false);
             Toast.makeText(getApplicationContext(), "Check1 is selected!!! =)",
             Toast.LENGTH_LONG).show();
            break;

        case R.id.check2:

            check1.setChecked(false);
             Toast.makeText(getApplicationContext(), "Check2 is selected!!! =)",
             Toast.LENGTH_LONG).show();
            break;

        default:
            break;
        }

    }
}