将用户输入保存到 SharedPrefernces 并将值设置为 EdiText [英] Save user input to SharedPrefernces and set Value to EdiText

查看:57
本文介绍了将用户输入保存到 SharedPrefernces 并将值设置为 EdiText的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在单击按钮时将用户输入保存到 SharedPreferences,以便当用户再次启动活动时,用户输入将设置为 EditText 和 TextView.我已经创建了一个 sharedPreferences 文件,我在之前的活动中保存了一些文本.我想用我创建的这个新活动的其他详细信息更新 SharedPreferences 文件.

I want to save user input to SharedPreferences when i click a button so that when a user launches the activity again the user input is set to the EditText and TextView. I already have a sharedPreferences File created that i save some text to in a previous activity. I want update the SharedPreferences File with another details from this new activity that i created.

这是用于创建和保存到 SharedPreferences 的代码

This is code for creating and saving to SharedPreferences

private SharedPreferences prefs;
public static final String PREF_FILE_NAME = "AuthUser";

prefs = this.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
txtDate = (TextView) findViewById(R.id.txtDate);

    addIdButton = (Button) findViewById(R.id.btnAddId);
    addIdButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            expiryDate = txtDate.getText().toString();
            edtIdNumber = (EditText) findViewById(R.id.edtIdNumber);
            idNumber = edtIdNumber.getText().toString();
            SharedPreferences.Editor editor = prefs.edit();
            editor.putInt("idType", idType);
            editor.putString("idNumber", idNumber);
            editor.putString("expiryDate", expiryDate);
            editor.apply();
        }
    });

这是我将共享首选项中的值设置为 EditText 和 TextView 的代码

This is my code to set the value from shared preferences to EditText and TextView

@Override
public void onStart(){
    super.onStart();
    File f = new File(PREF_FILE_NAME);
    if (f.exists()){
        idType = prefs.getInt("idType", 0);
        idNumber = prefs.getString("idNumber", "");
        expiryDate = prefs.getString("expiryDate", "");

        edtIdNumber = (EditText) findViewById(R.id.edtIdNumber);
        txtDate = (TextView) findViewById(R.id.txtDate);
        txtDate.setText(expiryDate);
        edtIdNumber.setText(idNumber);
        edtIdNumber.setText(idNumber);
        txtDate.setText(expiryDate);

    }
}

推荐答案

File f = new File(PREF_FILE_NAME); 只是有首选项的名字所以f.exists() 总是返回 false

File f = new File(PREF_FILE_NAME); just has the name of the preference so f.exists() will always returns false

解决方案:删除

File f = new File(PREF_FILE_NAME);
if (f.exists()){

因为如果您没有任何值,则只需使用默认值

because if you don't have any value then simply use the default value

@Override
public void onStart(){
    super.onStart();
    //File f = new File(PREF_FILE_NAME); // not a right path
    //if (f.exists()){ // false
        idType = prefs.getInt("idType", 0);
        idNumber = prefs.getString("idNumber", "");
        expiryDate = prefs.getString("expiryDate", "");

        edtIdNumber = (EditText) findViewById(R.id.edtIdNumber);
        txtDate = (TextView) findViewById(R.id.txtDate);
        txtDate.setText(expiryDate);
        edtIdNumber.setText(idNumber);
        edtIdNumber.setText(idNumber);
        txtDate.setText(expiryDate);

    //}
}

或者,您可以使用 contains

这篇关于将用户输入保存到 SharedPrefernces 并将值设置为 EdiText的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆