我正在尝试创建一个供我自己使用的应用程序,并且我正在尝试将 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/