Подтвердить что ты не робот

Проверьте, существует ли ключ в общих настройках

Я создаю общие настройки следующим образом

preferences = getSharedPreferences("text", 0);
final Editor editor = preferences.edit();

String s1 = serverIP.getText().toString();
String s2 = serverPort.getText().toString();
String s3 = syncPass.getText().toString();
String s4 = proxyServer.getText().toString();
String s5 = proxyPort.getText().toString();

editor.putString("SERVERIP", s1);
editor.putString("SERVERPORT", s2);
editor.putString("SYNCPASS", s3);
editor.putString("PROXYSERVER", s3);
editor.putString("PROXYPORT", s3);

и onCreate Я хочу отобразить значения в новом наборе TextView, но в первый раз у меня нет никаких значений, сохраненных в общих настройках, и я получу исключение NULL Pointer.

Я хочу знать, существует ли какой-либо встроенный метод, который может проверить, содержит ли SharedPreferences какое-либо значение или нет, чтобы я мог проверить, существует ли ключ, а если нет, то заменить новый набор TextViews значением предпочтений.

4b9b3361

Ответ 1

Попробуйте contains(String key) Accorting к Javadocs,

Проверяет, содержит ли предпочтения предпочтения. Возвращает true, если предпочтение существует в настройках, в противном случае - false.

Ответ 2

Каждый метод для извлечения значений из SharedPreferences имеет значение по умолчанию, которое возвращается в случае, если ключ не существует

preferences = getSharedPreferences("text", 0);
String value = preferences.getString("unknown_key",null);
if (value == null) {
    // the key does not exist
} else {
    // handle the value
}

Ответ 3

Попробуйте

 SharedPreferences shf = getSharedPreferences("NAME_SharedPref", MODE_WORLD_READABLE);
    String strPref = shf.getString("SERVERIP", null);

    if(strPref != null) {
    // do some thing

    }

Ответ 4

    LoadRuns();
if (loadedruns == 1) {
Toast.makeText(MainActivity.this, "First run", Toast.LENGTH_SHORT).show(); 
}
else {
Toast.makeText(MainActivity.this, "No. runs: " + loadedruns,
Toast.LENGTH_SHORT).show();
}
loadedruns++;
SaveRuns("runs", loadedruns);


    public void SaveRuns(String key, int value){
sharedPreferences =  PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt(key, value);
editor.commit();
}
public void LoadRuns(){
sharedPreferences =  PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
loadedruns = sharedPreferences.getInt("runs", 1);
}

Ответ 5

Почему бы вам просто не использовать блок try-catch?
Если у вас установлены значения и не выбрано исключение NULL Pointer, вы покажете их пользователю. В противном случае вы перейдете в блок catch, где вы будете обрабатывать загрузку приложения в первый раз. Я знаю, что это не "встроенный метод", но будет выполнять эту работу.
Приятного дня!