【问题标题】:How setup default value Shared Preferences in an android apk?如何在 android apk 中设置默认值 Shared Preferences?
【发布时间】:2026-01-14 23:10:02
【问题描述】:

我创建了一个具有共享首选项的设置类,并且在第一个打开的 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();

【问题讨论】:

    标签: android sharedpreferences


    【解决方案1】:

    当用户启动您的应用程序或 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
    

    【讨论】:

      【解决方案2】:

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

       SharedPreferences preferences=getSharedPreferences(preferencename, MODE_PRIVATE);
       String str=preferences.getString(key, defaultValue);
      

      【讨论】: