复选框默认值和OnCheckedChangeListener

Lie*_*uwe 4 checkbox android oncheckedchanged

这不是一个问题,但我试图找到一个正确的方法来做到这一点.

我有以下情况:

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) {

    ....

}
Run Code Online (Sandbox Code Playgroud)

setChecked(true)遇到的"问题"是,通过调用onCheckChanged将会触发.我想当我给布局充气时 - CheckBox用错误的设置进行初始化,然后我将其更改为true确实是一个CheckedChanged事件.

我当然可以在设置初始值后改变顺序并分配监听器,但有没有办法给布局充气,同时以某种方式传递各种组件的初始值?它们是动态的,因此我无法将值修复为settings.xml中的特定值

干杯

dou*_*uyw 6

上面的建议很好,但是这个问题仍然存在于可检查的ListView中.我用这种方式解决了它:禁用监听器,设置检查状态,然后再次设置监听器.这是一个辅助函数:

private void checkCheckBox(CheckBox checkBox, boolean checked) {
    checkBox.setOnCheckedChangeListener(null);
    checkBox.setChecked(checked);
    checkBox.setOnCheckedChangeListener(this);
}
Run Code Online (Sandbox Code Playgroud)