Возможно, я ошибаюсь, применяя то, что знаю из других API, поэтому, если это так, возможно, вы можете указать мне в другом направлении. Дело в том, что я не могу найти примеров для того, что я делаю. Я пытаюсь вызвать метод из макета xml. Я хочу вызвать тот же метод из разных флажков, в основном по щелчку любого флажка, я хочу сохранить состояние isChecked в файле SharedPreferences. Это мой XML и Java:Как вызвать метод из макета с переменными
<CheckBox
android:layout_width="194dp"
android:layout_height="wrap_content"
android:text="@string/Chri"
android:id="@+id/chkbxChristmas"
android:checked="false"
android:onClick="savePreferencesData(@string/Chri,@+id/chkbxChristmas)"/>
public void savePreferencesData(String preference,int id) {
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
CheckBox cb1 = (CheckBox) findViewById(id);
editor.putBoolean(preference, cb1.isChecked());
// Commit the edits!
editor.commit();
};
Как вы можете видеть, что я пытаюсь передать идентификатор флажка и @ строка/значение строки ЧРИ (я использую это значение в качестве тега в файле SharedPreferences), так метод знает, какое предпочтение нужно обновить.
Возможно ли передать переменные, и есть ли лучший способ определить, какой флажок вызывает метод?
Я ценю помощь!
Только быстрое обновление: По некоторым причинам я не мог заставить Lister функционировать ... вот мой код:
public void saveHanuPref(View view) {
final CheckBox checkBox = (CheckBox) findViewById(R.id.chkbxHanukkah);
checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked)
{
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(getString(R.string.Hanu), checkBox.isChecked());
editor.commit();
}
}
});
}
Вызов этой простой метод из XML-активности (с использованием OnClick) сделал работу:
public void saveChriPref(View view) {
CheckBox checkBox = (CheckBox) findViewById(R.id.chkbxChristmas);
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean(getString(R.string.Chri), checkBox.isChecked());
editor.commit();
};
Еще раз спасибо за помощь.
Это, кажется, добавить много кода, если у вас есть несколько флажков, но звучит так, как это делается. Спасибо за подробный пост. –