java - Sharedpreferences 保存 editText

标签 java android android-studio sharedpreferences

我正在尝试创建一个供我自己使用的应用程序,并且我正在尝试将 3 个 editText 框保存到 Sharedpref,以便我稍后可以使用这些值在应用程序中进行计算。

代码如下:

SharedPreferences mSharedPreferences;
private EditText mEditTextBench;
private EditText mEditTextSquat;
private EditText mEditTextDead;
private Button mButton;
public String maxDead =  mSharedPreferences.getString("maxDead", "DEFAULT");

然后在我的oncreate方法中:

mSharedPreferences= PreferenceManager.getDefaultSharedPreferences(this.getBaseContext());
    mButton = (Button) findViewById(R.id.button);
    mEditTextBench = (EditText) findViewById(R.id.editTextBench);
    mEditTextSquat = (EditText) findViewById(R.id.editTextSquat);
    mEditTextDead = (EditText) findViewById(R.id.editTextDead);

还有我的按钮 onclicklistener:

mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SharedPreferences.Editor editor = mSharedPreferences.edit();
            editor.putString("maxDead", mEditTextDead.getText().toString());
            editor.commit();

如果我将公共(public)字符串 maxDead 作为最终字符串放在 onCreate 方法中,它会起作用,但我希望将来能够使用 editText 更改该字符串。我不认为我可以把它作为 final 。

代码现在的样子,我得到这个错误:

Attempt to invoke interface method 'java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)' on a null object reference

最佳答案

你的代码应该是这样的。

SharedPreferences mSharedPreferences;
private EditText mEditTextBench;
private EditText mEditTextSquat;
private EditText mEditTextDead;
private Button mButton;
public String maxDead;

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

    mSharedPreferences= PreferenceManager.getDefaultSharedPreferences(this.getBaseContext());
    maxDead =  mSharedPreferences.getString("maxDead", "DEFAULT");

    mButton = (Button) findViewById(R.id.button);
    mEditTextBench = (EditText) findViewById(R.id.editTextBench);
    mEditTextSquat = (EditText) findViewById(R.id.editTextSquat);
    mEditTextDead = (EditText) findViewById(R.id.editTextDead);

    mButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            SharedPreferences.Editor editor = mSharedPreferences.edit();
            editor.putString("maxDead", mEditTextDead.getText().toString());
            editor.commit();
        }
    });
}

编辑: 在这里我展示了我使用 SharedPreference

的方式
SharedPreferences myPreference;
String MY_PREFERENCE = "my_preference";

在 onCreate 中初始化 SharedPreference:

myPreference = getSharedPreferences(MY_PREFERENCE, Context.MODE_PRIVATE);

获得值(value)

String data = myPreference.getString("maxDead", "")

用于编辑 SharedPreference :

SharedPreferences.Editor editor = myPreference.edit();
editor.putString("maxDead", mEditTextDead.getText().toString());
editor.commit();

希望对您有所帮助。

关于java - Sharedpreferences 保存 editText,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38436899/

相关文章:

android-studio - 如何修复 Gradle build 显示的 "Unmappable character for encoding windows-1252 error"?

java - 如何在java中获取命令提示符输出?

java - 将返回方法从 boolean 更改为 int

java - DatabaseHandler中的DatabaseHandler()不能应用于

android - 如何在 Android 中创建始终处于顶部的全屏覆盖 Activity

Android Build 升级到 Android Studio 4.2 后生成签名 APK 失败

java - 在类或方法中放置变量的最佳位置 (Android Studio)

java - Pebble watch 上的 Android 通知类型

java - 从下载中选择文件时崩溃

java - 使用 Mockito 和 Android 模拟 Drawable