-2

我使用共享首选项创建了一个设置类,在第一个打开的 apk 中,用户使用默认值,并在编辑后使用更新值。我的问题是当重新打开apk并且没有创建首选项apk显示默认值时,如果有旧的首选项显示这个。如果存在首选项(默认值不存在),我希望使用旧的保存首选项更新首选项 onCreate。我如何创建这个?如果 pref 存在,我想要一些东西去共享偏好...并读取值...否则使用默认值

String strValue ="http://www.power7.net/LEDstate.txt";//default value

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ioweb_bt);

   /* SharedPreferences preferences = getSharedPreferences("dataioweb" , MODE_PRIVATE);

    String strValue = preferences.getString("Url","");
      text = (TextView) findViewById(R.id.textUrl);
      text.setText(strValue);
    */

       edittxtUrl = (EditText)findViewById(R.id.txtUrl);
      edittxtUrl.setText(strValue);




}

public void Save(View view) {

     SharedPreferences preferences = getSharedPreferences("dataioweb" , MODE_PRIVATE);
      SharedPreferences.Editor editor = preferences.edit();  // Put the values from the UI

       edittxtUrl = (EditText)findViewById(R.id.txtUrl);
      String strUrl = edittxtUrl.getText().toString();


      editor.putString("Url", strUrl); // value to store

      // Commit to storage
      editor.commit();
4

2 回答 2

0

当用户启动您的应用程序或 SharedPreferences 中不存在任何值时,更改您的代码以在 TextView 中设置默认值

SharedPreferences preferences;
String strValue="";
TextView text;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ioweb_bt);

    text = (TextView) findViewById(R.id.textUrl);
    preferences = getSharedPreferences("dataioweb" , MODE_PRIVATE);

    strValue = preferences.getString("Url","");
    if(!strValue.equals("")){

      text.setText(strValue);
    }
    else{
         text.setText("Set Default value here");
      }

  // your code here
于 2012-12-28T08:13:07.693 回答
0

这样,如果没有值与您的偏好键对应,您可以从偏好中获取默认值

 SharedPreferences preferences=getSharedPreferences(preferencename, MODE_PRIVATE);
 String str=preferences.getString(key, defaultValue);
于 2012-12-28T08:16:44.383 回答