#android
#Android
Вопрос:
У меня есть два значения, как я могу их сохранить и восстановить.
public void SetCaseInfo(String PatientType, String Teethsselected) { // All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(DEALSPOTR_PREFS, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString(PatientType, Teethsselected);
editor.commit();
}
public String getCaseInfo() {
SharedPreferences settings = getSharedPreferences(DEALSPOTR_PREFS, 0);
String value = settings.getString(PatientType, Teethsselected);
return value;
}
правильно ли это?
Комментарии:
1. Вы столкнулись с какими-либо проблемами здесь ..?
2. @ntc если
PatientType
это строка, имеющая несколько значений, он всегда будет сохранятьсяTeethsselected
с ключомPatientType
. это означает, что он не может получитьTeethsselected
, кроме как если он знает значениеPatientType
. Если он хочет сохранить две строки, каждая строка должна иметь ключ для себя.3. @Sheriff.. вы просто не можете судить об этом, увидев его вопрос. когда я вижу его сообщение, кажется, что он сделал «PatientType, Teethsselected» в качестве переменных класса. Не должно быть никаких проблем, если он не инициализирует их несколько раз.
4. @ntc Кажется более рациональным и справедливым судить на основе его вопроса
I have two values how can i store and restore it.
5. @Sheriff.. Вы правы.:) .. я никогда не удосуживался посмотреть, что он спрашивает. просто взглянул на код…
Ответ №1:
В вашем коде PatientType
не должно изменяться, чтобы вы могли извлекать выбранные элементы
Вы не сохраняете 2 строки
public void SetCaseInfo(String PatientType, String Teethsselected) { // All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(DEALSPOTR_PREFS, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("teeth", Teethsselected);
editor.putString("patient", PatientType);
editor.commit();
}
public String getTeethsselected() {
SharedPreferences settings = getSharedPreferences(DEALSPOTR_PREFS, 0);
String value = settings.getString("teeth", "default");
return value;
}
public String getPatientType() {
SharedPreferences settings = getSharedPreferences(DEALSPOTR_PREFS, 0);
String value = settings.getString("patient", "default");
return value;
}
Комментарии:
1. public void SetCaseInfo(String PatientType,String Teethsselected){ // Все объекты взяты из android.context.Context SharedPreferences settings = getSharedPreferences(DEALSPOTR_PREFS, 0); SharedPreferences . Редактор editor = settings.edit(); редактор editor.putString(ТИП, PatientType); редактор editor.putString(ЗУБЫ, выбранные зубы); mPatientType=PatientType; mTeethselected=Выбранные зубы; // Зафиксируйте изменения! editor.commit(); }
2. public void restorePreferredCaseInfo(строковый тип, строковые зубцы) { // Автоматически сгенерированный заглушка метода TODO // Восстановление настроек SharedPreferences settings = getSharedPreferences(DEALSPOTR_PREFS, 0); mPatientType = settings.getString(ТИП,тип); mTeethselected=settings.getString(ЗУБЦЫ, зубцы); }
3. @user828948 почему вы не использовали функции в моем ответе? вам нужно будет использовать 1 функцию для извлечения каждого значения, поэтому вам понадобятся 2 функции для двух значений.
Ответ №2:
Здесь вы сохраняете только одно значение:
editor.putString(PatientType, Teethsselected);
здесь PatientType — это ключ, а не значение, которое вы хотите сохранить.
Аналогично, здесь вы восстанавливаете только одно значение:
String value = settings.getString(PatientType, Teethsselected);
Teethsselected
это значение по умолчанию для ключа PatientType
. Если это то, что вы намеревались, то да, это правильно.