Ответ 1
Попробуйте contains(String key)
Accorting к Javadocs,
Проверяет, содержит ли предпочтения предпочтения. Возвращает true, если предпочтение существует в настройках, в противном случае - false.
Я создаю общие настройки следующим образом
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 значением предпочтений.
Попробуйте contains(String key)
Accorting к Javadocs,
Проверяет, содержит ли предпочтения предпочтения. Возвращает true, если предпочтение существует в настройках, в противном случае - false.
Каждый метод для извлечения значений из SharedPreferences
имеет значение по умолчанию, которое возвращается в случае, если ключ не существует
preferences = getSharedPreferences("text", 0);
String value = preferences.getString("unknown_key",null);
if (value == null) {
// the key does not exist
} else {
// handle the value
}
Попробуйте
SharedPreferences shf = getSharedPreferences("NAME_SharedPref", MODE_WORLD_READABLE);
String strPref = shf.getString("SERVERIP", null);
if(strPref != null) {
// do some thing
}
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);
}
Почему бы вам просто не использовать блок try-catch?
Если у вас установлены значения и не выбрано исключение NULL Pointer, вы покажете их пользователю. В противном случае вы перейдете в блок catch, где вы будете обрабатывать загрузку приложения в первый раз.
Я знаю, что это не "встроенный метод", но будет выполнять эту работу.
Приятного дня!