这不是什么大问题,但我正在努力寻找一种正确的方法。
我有以下情况:
public class SettingsDialogFragment extends DialogFragment implements OnCheckedChangeListener {
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.settings, container);
...
CheckBox lBox1 = (CheckBox)view.findViewById(R.id.checkBox1);
lBox1.setOnCheckedChangeListener(this);
lBox1.setChecked(true);
return view;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
....
}
我遇到的“问题”是通过调用 setChecked(true)
onCheckChanged 已经触发。我想当我膨胀布局时 - CheckBox
被初始化为 false 设置,我将其更改为 true 确实是一个 CheckedChanged
事件。
我当然可以在设置初始值后更改顺序并分配监听器,但是有没有一种方法可以膨胀布局,同时以某种方式为各个组件传递初始值?它们是动态的,所以我无法将值固定为 settings.xml 中的特定值
干杯
最佳答案
上面的建议很好,但是这个问题在一个checkable的ListView中依然存在。我是这样解决的:disable the listener,set check state,然后再set listener。这是一个辅助函数:
private void checkCheckBox(CheckBox checkBox, boolean checked) {
checkBox.setOnCheckedChangeListener(null);
checkBox.setChecked(checked);
checkBox.setOnCheckedChangeListener(this);
}
关于android - 复选框默认值 & OnCheckedChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14259193/