android:检查共享首选项中是否存在值

我正在创build共享首选项,如下所示

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指针exception。

所以我想知道是否有任何内置的方法可以检查共享首选项是否包含任何值 ,以便我可以检查值是否存在,如果不存在,然后用首选项值replace新的TextViews集。

试试contains(String key)对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指针exception被抛出,您将显示给用户。 否则,你将进入catch块来处理应用程序的第一次加载。 我知道这不是“内置的方法”,但会做这项工作。
祝你今天愉快!