Android应用程序中的计数器按钮无法与SharedReference一起正常工作
我遇到一个关于保存由Android应用程序中的计数器按钮无法与SharedReference一起正常工作,android,button,sharedpreferences,Android,Button,Sharedpreferences,我遇到一个关于保存由按钮修改的整数的问题。按下按钮时,整数值上升;但是,当我关闭并重新打开应用程序时,不会保存整数。如果有任何帮助,我将不胜感激 public class MyActivity extends Activity implements View.OnClickListener { public static final String PREFS_NAME = "MyPrefsFile"; Button btn1; Button btn2; Button btn3; Button
按钮修改的整数的问题。按下按钮
时,整数值上升;但是,当我关闭并重新打开应用程序时,不会保存整数。如果有任何帮助,我将不胜感激
public class MyActivity extends Activity implements View.OnClickListener {
public static final String PREFS_NAME = "MyPrefsFile";
Button btn1;
Button btn2;
Button btn3;
Button btn4;
Button save;
TextView textTitle;
EditText scoreText;
EditText scoreText2;
int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
btn1 = (Button) findViewById(R.id.add);
btn2 = (Button) findViewById((R.id.sub));
scoreText = (EditText) findViewById(R.id.intro);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
final SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(this);
scoreText.setText(prefs.getString("autosave" , ""));
scoreText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Do nothing
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Do nothing
}
@Override
public void afterTextChanged(Editable s) {
prefs.edit().putString("autosave", s.toString()).commit();
}
});
@Override
public void onClick(View v) {
if (v == btn1) {
counter++;
scoreText.setText(Integer.toString(counter));
} else if (v == btn2) {
counter--;
scoreText.setText(Integer.toString(counter));
}
}
}
首先,尝试将commit()行移动到onTextChanged()回调,并添加Log.d()调用以帮助调试
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.d("onTextChanged", s.toString());
prefs.edit().putString("autosave", s.toString()).commit();
}
修改文本时请检查日志,以确保已触发回调
如果这不起作用,我建议将commit()行移动到onClick()回调
@Override
public void onClick(View v) {
if (v == btn1) {
counter++;
scoreText.setText(Integer.toString(counter));
prefs.edit().putString("autosave", scoreText.getText()).commit();
} else if (v == btn2) {
counter--;
scoreText.setText(Integer.toString(counter));
prefs.edit().putString("autosave", scoreText.getText()).commit();
}
}
您好,谢谢您的评论,当我添加这一行,它说是无法解决符号prefs。如果我添加Sharepreferences prefs;在publicstaticfinal中,我得到的putString不能在编辑器中应用