我希望我的代码在选中/取消选中复选框的事件时动态执行某些操作。 我有这段代码:
checkConfidentiality.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(isChecked==true)
new AlertDialog.Builder(this).setTitle("Argh").setMessage("YEEEEEEEE").setNeutralButton("Close", null).show();
else
new AlertDialog.Builder(this).setTitle("Argh").setMessage("NOOOOOOOO").setNeutralButton("Close", null).show();
}
});
在这种特殊情况下,我在AllertDialog声明中出现错误,当然因为在回调函数中“this”变量没有任何意义。 问题是,如何将变量(父作用域的“this”或任何其他变量)传递给回调函数? 谢谢!
答案 0 :(得分:6)
YourClassName.this
应该这样做。
或者您应该编写自定义类。例如
private class MyOnCheckedChangeListener implement CompoundButton.OnCheckedChangeListener {
private Context context;
public MyOnCheckedChangeListener (Context context) {
this.context = context;
}
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
}
}
并使用它:
checkConfidentiality.setOnCheckedChangeListener(new MyOnCheckedChangeListener(this));
检查拼写错误
答案 1 :(得分:1)
您不必传递活动,您需要传递上下文。您可以使用
buttonView.getContext()
代替this
:
checkConfidentiality.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(isChecked==true)
new AlertDialog.Builder(buttonView.getContext()).setTitle("Argh").setMessage("YEEEEEEEE").setNeutralButton("Close", null).show();
else
new AlertDialog.Builder(buttonView.getContext()).setTitle("Argh").setMessage("NOOOOOOOO").setNeutralButton("Close", null).show();
}
});