2014-07-13 38 views
0
串共享偏好

我想设置偏好的字符串值:在Android电子

//onCreate 
    if(name==null){ 
       setprefer(); 
      } 
      else{ 
       getpref(); 
      } 

    private void setprefer() { 
      et1 = (EditText) findViewById(R.id.editText1); 
      b1 = (Button) findViewById(R.id.button1); 
      b1.setOnClickListener(new OnClickListener() { 
       public void onClick(View arg0) { 
        s = et1.getText().toString(); 
        if(s.matches("")) 
        { 
         //wait!! 
         Toast.makeText(Home.this, "Enter your name", Toast.LENGTH_SHORT).show(); 
        } 
        else{ 
         setpref(s); 
         Intent i = new Intent(Home.this, Homescreen.class); 
         i.putExtra("name", s); 
         startActivity(i); 
         Home.this.finish(); 
        } 
       } 
      }); 
     } 

     private void setpref(String name) { 
      SharedPreferences pref = this.getSharedPreferences("prefkey", Context.MODE_PRIVATE); 
      Editor editor = pref.edit(); 
      editor.putString("key", name); 
      editor.commit();   
     } 
     private void getpref() { 
      SharedPreferences prefs = this.getSharedPreferences("prefkey", Context.MODE_PRIVATE); 
      s = prefs.getString("key", name); 
      Intent i = new Intent(Home.this, Homescreen.class); 
      i.putExtra("name", name); 
      startActivity(i); 
      Home.this.finish(); 
     } 

我设置与方法setprefer(偏好),但每次我开始我的活动的要求FR我已经存储在我的首选项中的名称。 不知何故,我无法在上面的代码中获得我保存的预先考虑。 请提出修复建议。

+0

从共享pref中提取文件并且你也可以看到这些值 – KOTIOS

+0

我不确定是否有足够的上下文(特别是'onCreate'的实际完整代码)来确定问题。 – Dallas

+0

没有更多的onCreate。我只是按照指定的函数调用几个函数。 – Shubhankar

回答

1

这取决于当你做这个有什么name有:

if(name==null){ 
    setprefer(); 
} 
else{ 
    getpref(); 
} 

但是因为检查你是不是name变量指定的任何值之前,它是空,因此setPrefer()被称为每次。您需要从SharedPrefs中获取值,并在检查name == null之前将其分配到name

0

共享首选项有一个名为contains()的方法。请检查共享首选项是否已存在。如果首选项存在,该方法将返回true。

+1

如果你这样做了,而且它是空的,它会崩溃,并带有NullPointerException。所以不要这样做。另外,'比赛'不是很好。在这两种情况下,都使用TextUtils.isEmpty(val),它同时处理空字符串和空字符串。 –