Я работаю над 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. но опять же значение флажка не сохраняется.
Как я могу сохранить произвольный текст в строке?
Насколько я понимаю ваш вопрос, вы хотите изменить эту переменную String selectedAtbSealedValue = "";, когда пользователь установит ваш флажок.
Чтобы добиться этого, вы можете использовать onCheckedListener, который запускается, как только пользователи устанавливают или снимают флажок с вашего флажка.
atbSealedCheckBox.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged( CompoundButton buttonView, boolean isChecked ) {
// Todo something.
}
} );
Попробуйте это, у меня это сработает:
atbSealedCheckBox.setOnCheckedChangeListener( new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged( CompoundButton buttonView, boolean isChecked ) {
if (isChecked) {
selectedAtbSealedValue = "yes";
} else {
selectedAtbSealedValue = "no";
}
}
} );
После этого вы можете сохранить selectedAtbSealedValue в БД;
Обновлять: Ваш фиксированный код:
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;
}
}
});Да, в любом случае пусто
конечно, я добавлю это
Почему вы не используете boolean b, b = true отмечен, b=false не отмечен
если (б) {selectedAtbSealedValue = "Да"; ctQuantitySpinner.setEnabled (ложь); ctQuantitySpinner.setSelection (0); isatbSealedChecked = true; } еще {selectedAtbSealedValue = "Нет"; ctQuantitySpinner.setEnabled (истина); ctQuantitySpinner.setSelection (0); isatbSealedChecked = false; }
Позвольте нам продолжить обсуждение в чате.
Пожалуйста, давай в чат
private CheckBox atbSealedCheckBox; private String selectedAtbSealedValue = ""; это глобальные переменные
private String selectedAtbSealedValue = ""; поместил это вне onCreate () (глобальная переменная). Он не может изменить значение на да или нет, потому что он автоматически преобразуется в конечную переменную в onCreate ()
Да, они оба global
И не окончательный?
Это вам поможет. При нажатии кнопки отправки получить текущее значение флажка.
submit_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
control_of_vectors_value = control_of_vectors_checkbox.isChecked() == true ? "yes" : "no"; }}
Вы пробуете Журнал для значения
selectedAtbSealedValue