Проверьте, существует ли ключ в общих настройках - PullRequest
41 голосов
/ 06 января 2012

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

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 значением предпочтения.

Ответы [ 4 ]

130 голосов
/ 26 июля 2013

Попробуйте contains(String key) В соответствии с Javadocs,

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

21 голосов
/ 06 января 2012

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

preferences = getSharedPreferences("text", 0);
String value = preferences.getString("unknown_key",null);
if (value == null) {
    // the key does not exist
} else {
    // handle the value
}
9 голосов
/ 06 января 2012

Попробуйте

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

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

    }
0 голосов
/ 11 февраля 2017
    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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...