我正在研究android
。我的app
中有一个复选框,我想在选中或不检查复选框时保存自定义文字。
CheckBox atbSealedCheckBox;
String selectedAtbSealedValue ="";
atbSealedCheckBox = (CheckBox) view.findViewById(R.id.atbCheckBox);
现在,如果我选中了checkbox
,那么我希望Yes
存储No
。另外,我想将它存储在我的数据库中。为此,我已在get
set
和Model
方法
private String atbSealed;
public String getAtbSealed(){return atbSealed;}
public void setAtbSealed(String atbSealed){this.atbSealed=atbSealed;}
更新1
根据建议,我在下面尝试过
atbSealedCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(isatbSealedChecked)
{
selectedAtbSealedValue = "Yes";
ctQuantitySpinner.setEnabled(false);
ctQuantitySpinner.setSelection(0);
isatbSealedChecked = true;
}
else
{
selectedAtbSealedValue = "No";
ctQuantitySpinner.setEnabled(true);
ctQuantitySpinner.setSelection(0);
isatbSealedChecked = false;
}
}
});
但它并没有帮助我。此外,ctQuantitySpinner
未在atbSealedCheckbox
检查时停用。此外,如果选中,则复选框的布尔值不会更改为true
。虽然在log
我确实看到selectedAtbSealedValue
,但未在应用中设置。在我的SaveDataLocal()
函数中,我设置了如下的值
survey.setAtbSealed(this.selectedAtbSealedValue);
SurveyManager dbHelper = new SurveyManager(getActivity());
dbHelper.addSurvey(survey);
我也尝试过以下代码
atbSealedCheckBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(((CheckBox)v).isChecked())
{
ctQuantitySpinner.setEnabled(false);
ctQuantitySpinner.setSelection(0);
selectedAtbSealedValue = "Yes";
isatbSealedChecked = true;
//atbCheckBoxEdittext.setText(selectedAtbCheckBox);
}
else {
ctQuantitySpinner.setEnabled(true);
ctQuantitySpinner.setSelection(0);
selectedAtbSealedValue = "No";
isatbSealedChecked = false;
//atbCheckBoxEdittext.setText(selectedAtbCheckBox);
}
}
});
此代码向我显示selected checkbox value
,禁用spinner
并将微调器值设置为null
。但是同样没有保存复选框值。
如何在字符串中保存自定义文字?
答案 0 :(得分:1)
试试这个,它对我有用:
atbSealedCheckBox.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged( CompoundButton buttonView, boolean isChecked ) {
if (isChecked) {
selectedAtbSealedValue = "yes";
} else {
selectedAtbSealedValue = "no";
}
}
} );
之后,您可以将selectedAtbSealedValue
存储到DB中;
更新:您的固定代码:
atbSealedCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if(b)
{
selectedAtbSealedValue = "Yes";
ctQuantitySpinner.setEnabled(false);
ctQuantitySpinner.setSelection(0);
isatbSealedChecked = true;
}
else
{
selectedAtbSealedValue = "No";
ctQuantitySpinner.setEnabled(true);
ctQuantitySpinner.setSelection(0);
isatbSealedChecked = false;
}
}
});
答案 1 :(得分:0)
只要我理解了您的问题,您就希望在用户选中复选框时更改此变量String selectedAtbSealedValue ="";
。
要实现此声明,您可以使用在用户选中或从复选框中删除支票后立即触发的onCheckedListener。
atbSealedCheckBox.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged( CompoundButton buttonView, boolean isChecked ) {
// Todo something.
}
} );
答案 2 :(得分:0)
这会对你有所帮助。 在提交按钮处获取复选框的当前值。
submit_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
control_of_vectors_value = control_of_vectors_checkbox.isChecked() == true ? "yes" : "no"; }}