ishitcno1
ishitcno1

Reputation: 713

How to inspect before checkbox state changed

I want to inspect something before CheckBox's state changed. If user has logged in, change the state and post data to server. Otherwise, keep the state and show a log-in activity.

OnCheckedChangeListener does not fit. Is there anything like PreferenceChangeListener (return false to keep state) in CheckBox.

Or other methods.

Thank you!

Update:
OnClickListener work for me.

@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
        }
}

Upvotes: 0

Views: 100

Answers (3)

Andrew T.
Andrew T.

Reputation: 4707

If I'm not misunderstood your question, you can still achieve it by using 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();
    }
}

Upvotes: 1

Hanan
Hanan

Reputation: 444

 @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;
        }

    }
}

Upvotes: 0

Hassaan Rabbani
Hassaan Rabbani

Reputation: 2465

You can do something like this:

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

    }
});

or if you just want to see if the checkbox has been checked or not, then you can use this

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

Upvotes: 0

Related Questions