2012-01-06 2 views
31

안드로이드는 : 값이 공유 환경에 존재하는지 확인

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 내가 TextViews의 새로운 세트의 값을 표시 할대로 내가 공유 환경을 만드는거야,하지만 처음 내가하지 공유 환경 설정에 저장된 모든 값을 가지며 NULL 포인터 예외가 발생합니다.

그래서 나는 공유 환경 설정 값 여부를 포함 된 경우 나 값이 존재하는지 확인하지 않을 경우, 그 새로운 세트를 장착 할 수 있도록, 확인할 수있는 기본 방법이 있는지 알고 싶어요 환경 설정 값을 가진 TextViews.

답변

106

사용해보십시오

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

이 대답을 받아 들여야합니다 –

+2

동의했습니다, 이것은 정답입니다 – smoothumut

-1

왜 그냥 try-catch 블록을 사용하지 않으시겠습니까?
값이 설정되어 있고 NULL이 아닌 포인터가 있으면 포인터 예외가 발생하여 사용자에게 표시됩니다. 그렇지 않으면 응용 프로그램의 처음로드를 처리 할 catch 블록으로 이동합니다. "inbuilt method"가 아니라는 것을 알고 있지만, 그 일을 할 것입니다.
좋은 하루 되세요!

+0

그것이 모든 – Vivekanand

20

SharedPreferences에서 값을 가져 오는위한 모든 방법은 키가 JavaDoc을 Accorting contains(String key)을 시도

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

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

    } 
+1

이 올바른지,하지만 키가 존재하는 경우에 캐치로 이동 아무튼, 값이 널 (null)/빈 말합니다 어떤 이유로이 does'n 작업 친구 ...? 예제 : Kevin

+49

이것이 받아 들여지는 대답이지만 저자가 실제로 찾고있는 것이'preferences.contains ("unknown_key"); ... 예를 들어, 부울 선호가있는 경우 분명히 true 또는 false 일 수 있습니다. 기본값을 주면 실제로 가능한 값 일지라도 존재하지 않는다면 그 값이 반환되므로 기본 설정이 있는지 여부를 알려주지 않습니다. – fatfreddyscat

+2

잘못된 대답 - 실제로'prefsEditor.putString ("지금 키가 존재합니다", null) .commit();'완벽하게 합법적이며 키가 존재하고 값이 null입니다. -1 –

9

존재하지 않는 경우에 반환되는 디폴트 값을 가지고

환경 설정에 환경 설정이 포함되어 있는지 확인합니다. 환경 설정에 환경 설정이 존재하면 을 반환하고, 그렇지 않으면 false를 반환합니다.

+0

nice 대답 Richa – Android

+0

int 값? –

0
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); 
} 
+0

이 코드가 작동하는 이유에 대한 몇 가지 컨텍스트를 추가하십시오. 대답을 더 유용하고 더 유용하게 만듭니다. 감사! :) – Alex

관련 문제