как восстановить и сохранить два строковых значения?

#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 . Если это то, что вы намеревались, то да, это правильно.