首页 > 解决方案 > EditText 不由 SharedPreferences 保存

问题描述

我应该使用保存三个 EditTexts 的字符串,SharedPreferences以便在用户重新进入应用程序时可以在 TextView 中使用它们。这是我尝试过的:

public class MainActivity extends AppCompatActivity {

    private EditText PrivName;
    private EditText LastName;
    private EditText LastMov;
    SharedPreferences sp;
    private Button SaveBtn;
    private TextView Text;
    String Priv, Lst, Mov;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PrivName = (EditText)findViewById(R.id.PrivName);
        LastName = (EditText)findViewById(R.id.LastName);
        LastMov = (EditText)findViewById(R.id.LastMov);
        SaveBtn = (Button)findViewById(R.id.SaveBtn);
        Text = (TextView) findViewById(R.id.Message);

        sp = getSharedPreferences("Movies", Context.MODE_PRIVATE);

        SaveBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Priv = PrivName.getText().toString();
                Lst = LastName.getText().toString();
                Mov = LastMov.getText().toString();

                SharedPreferences.Editor editor = sp.edit();

                editor.putString("Name", Priv);
                editor.putString("Name2", Lst);
                editor.putString("Movie", Mov);
                editor.commit();
            }
        });
        Text.setText("We hope that you  " + Priv + " "  +Lst + " enjoyed the movie: " + Mov);
    }
}

显然问题在于,当您单击按钮时,TextView 会更改为您想要的内容,但是当您重新进入应用程序时,一切都会重置而不是保持不变

标签: javaandroidsharedpreferences

解决方案


您还需要从 SharedPrefs 中读取数据,以便实际填充 EditText。尝试这样的事情:

在你的 onCreate 方法中添加这个

sp = getSharedPreferences("Movies", Context.MODE_PRIVATE);
PrivName.setText(sp.getString("Name", "")); //The empty string after the comma is a default value incase you don't a stored value for that key
LastName.setText(sp.getString("Name2", ""));
LastMov.setText(sp.getString("Movie", ""));

推荐阅读