Java Android:复选框侦听器
我想将侦听器置于Java Android:复选框侦听器,java,android,android-checkbox,Java,Android,Android Checkbox,我想将侦听器置于复选框上。我查找信息,结果如下: satView = (CheckBox)findViewById(R.id.sateliteCheckBox); satView.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (isChec
复选框上。我查找信息,结果如下:
satView = (CheckBox)findViewById(R.id.sateliteCheckBox);
satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (isChecked){
// perform logic
}
}
});
问题是Eclipse认为它是一个OnCheckedChangeListener
,用于RadioGroup
,但它不起作用。如何修复此问题?您可以执行以下操作:
satView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
}
}
);
使用CompoundButton视图更改RadioGroup组,然后按Ctrl+Shift+O组合键修复导入。尝试此操作
satView.setOnCheckedChangeListener(new android.widget.CompoundButton.OnCheckedChangeListener.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
if (isChecked){
// perform logic
}
}
});
试试这个:
satView=(复选框)findviewbyd(R.id.sateliteCheckBox);
setOnCheckedChangeListener(新的OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮视图,布尔值已检查){
如果(buttonView.isChecked()){
//检查
}
其他的
{
//未检查
}
}
});
希望这有帮助。您也可以使用一个简单的视图。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");
}
}
});
由于导入了错误的包,因此出现错误。您应该导入android.widget.CompoundButton.OnCheckedChangeListener代码>
因此,回调应该是:
box.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
}
});
你可以使用这个代码
public class MySampleActivity extends Activity {
CheckBox cb1, cb2, cb3, cb4;
LinearLayout l1, l2, l3, l4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
cb1 = (CheckBox) findViewById(R.id.cb1);
cb2 = (CheckBox) findViewById(R.id.cb2);
cb3 = (CheckBox) findViewById(R.id.cb3);
cb4 = (CheckBox) findViewById(R.id.cb4);
l1 = (LinearLayout) findViewById(R.id.l1);
l2 = (LinearLayout) findViewById(R.id.l2);
l3 = (LinearLayout) findViewById(R.id.l3);
l4 = (LinearLayout) findViewById(R.id.l4);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(1));
cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(2));
cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(3));
cb1.setOnCheckedChangeListener(new MyCheckedChangeListener(4));
}
public class MyCheckedChangeListener implements CompoundButton.OnCheckedChangeListener {
int position;
public MyCheckedChangeListener(int position) {
this.position = position;
}
private void changeVisibility(LinearLayout layout, boolean isChecked) {
if (isChecked) {
l1.setVisibility(View.VISIBLE);
} else {
l1.setVisibility(View.GONE);
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
switch (position) {
case 1:
changeVisibility(l1, isChecked);
break;
case 2:
changeVisibility(l2, isChecked);
break;
case 3:
changeVisibility(l3, isChecked);
break;
case 4:
changeVisibility(l4, isChecked);
break;
}
}
}
}
将Chris接受的答案翻译成Kotlin:
val checkBox: CheckBox = findViewById(R.id.chk)
checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
// Code here
}
如果您希望在Kotlin中通过接口实现来实现这一点
class MainActivity: AppCompatActivity(),CompoundButton.OnCheckedChangeListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val yourCheckBox = findViewById<CheckBox>(R.id.check_box)
yourCheckBox.setOnCheckedChangeListener(this)
}
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
when(buttonView?.id){
R.id.check_box -> Log.d("Checked: ","$isChecked")
}
}
}
class MainActivity:AppCompatActivity(),CompoundButton.OnCheckedChangeListener{
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val yourCheckBox=findviewbyd(R.id.checkbox)
yourCheckBox.setOnCheckedChangeListener(此)
}
更改检查时覆盖乐趣(按钮视图:CompoundButton?,isChecked:布尔值){
何时(按钮查看?.id){
R.id.check_框->Log.d(“选中:”,“$isChecked”)
}
}
}
谢谢,下面是如何删除它的方法:OnCheckedChangeListener
和CompoundButton.OnCheckedChangeListener
是不同的。对于kotlin satView.setOnCheckedChangeListener{buttonView,\>如果(buttonView.isChecked){//执行操作}其他{//执行操作}欢迎使用Stack Overflow!通过解释它是如何工作的,您可以更好地回答这个问题。当我想要侦听复选框单击操作时,这实际上是唯一一个有效的解决方案,而不是其他解决方案建议的状态。为什么要将“LinearLayout”传递给“changeVisibility”(LinearLayout布局,布尔值已选中)'方法,但您每次仅更改一个布局的可见性?注意:如果未使用按钮视图:“{uu,isChecked->”
class MainActivity: AppCompatActivity(),CompoundButton.OnCheckedChangeListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val yourCheckBox = findViewById<CheckBox>(R.id.check_box)
yourCheckBox.setOnCheckedChangeListener(this)
}
override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) {
when(buttonView?.id){
R.id.check_box -> Log.d("Checked: ","$isChecked")
}
}
}