重新打开应用后,Android SharedPreferences无法保存

时间:2016-07-14 18:45:54

标签: android sharedpreferences

我正在尝试使用非常简单的应用SharedPreferences 它只是一个{0}的TextView和一个增加此数字的按钮,但重新打开应用程序并按下按钮后重置为0 这是代码:

public class MainActivity extends AppCompatActivity {

public TextView t1;
public Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    b1=(Button)findViewById(R.id.button);
    t1=(TextView)findViewById(R.id.textView);

    SharedPreferences mypref=getSharedPreferences("file",MODE_PRIVATE);
    int n=mypref.getInt("n",0);
    String s=""+n;
    t1.setText(s);
    SharedPreferences.Editor editor=mypref.edit();
    editor.putInt("n",0);
    editor.apply();

    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            add();
        }
    });
}

add方法:

private void add() {
    SharedPreferences mypref=getSharedPreferences("file",MODE_PRIVATE);
    SharedPreferences.Editor editor=mypref.edit();
    int n=mypref.getInt("n",0);
    n++;
    String s=""+n;
    t1.setText(s);
    editor.putInt("n",n);
    editor.apply();

}

1 个答案:

答案 0 :(得分:0)

每次创建活动时都会有此代码(打开应用程序时也一样):

SharedPreferences mypref=getSharedPreferences("file",MODE_PRIVATE);
int n=mypref.getInt("n",0);
String s=""+n;
t1.setText(s);

// here  you reset the counter to 0
SharedPreferences.Editor editor=mypref.edit();
editor.putInt("n",0);
editor.apply();
// the problem ends here

因此,要解决问题只需删除注释之间的代码