Android:复选框监听器

Rom*_*dgz 95 java android android-checkbox

我想把一个听众放在一个CheckBox.我查找信息,它是这样的:

satView = (CheckBox)findViewById(R.id.sateliteCheckBox);

satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        if (isChecked){
            // perform logic
        }
    }

});
Run Code Online (Sandbox Code Playgroud)

问题是Eclipse认为它是一个OnCheckedChangeListenerfor a RadioGroup并且它不起作用.我怎样才能解决这个问题?

Chr*_*ris 238

你可以这样做:

satView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

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

       }
   }
);     
Run Code Online (Sandbox Code Playgroud)


小智 46

你也可以去一个简单的View.OnClickListener:

satView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        if(((CompoundButton) view).isChecked()){
            System.out.println("Checked");
        } else {
            System.out.println("Un-Checked");
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 当我想听复选框 **click action** 而不是它的 **state** 时,它实际上只是一个可行的解决方案,就像其他解决方案在那里推荐的那样。 (2认同)

Hua*_*ang 18

你得到错误,因为你导入了错误的包.你应该 import android.widget.CompoundButton.OnCheckedChangeListener;

所以回调应该是:

        box.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // TODO Auto-generated method stub

        }
    });
Run Code Online (Sandbox Code Playgroud)


小智 10

试试这个:

satView = (CheckBox) findViewById(R.id.sateliteCheckBox);

satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
          if (buttonView.isChecked()) { 
                // checked
          } 
          else 
          {
                // not checked
          }
    }

});
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Ell*_*lar 6

将 Chris 接受的答案翻译成 Kotlin:

val checkBox: CheckBox = findViewById(R.id.chk)
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
    // Code here 
}
Run Code Online (Sandbox Code Playgroud)