如果退出并重新进入活动,则还原变量

时间:2019-04-26 10:35:26

标签: android

我有一个将变量增加1的按钮,结果显示在TextView中。旋转设备时,变量值会保留,但是如果退出活动然后重新输入,则会重置每个值。我该如何解决?

int n=0;

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

    final TextView tv = (TextView)findViewById(R.id.tvProva);
    Button b = (Button)findViewById(R.id.bProva);

    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            n++;
            tv.setText(""+n);
        }
    });

    if(savedInstanceState!=null){
        n = savedInstanceState.getInt("n");
        tv.setText(""+n);
    }
}


@Override
protected void onSaveInstanceState(Bundle outState) {

    super.onSaveInstanceState(outState);

    outState.putInt("n", n);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
    super.onRestoreInstanceState(savedInstanceState);

    savedInstanceState.getInt("n");
}

1 个答案:

答案 0 :(得分:0)

有两个潜在的选择。

正如Tejas所说,

SharedPreferences是一个如何使用它的示例;

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); 

为您节省价值;

Editor editor = pref.edit();
editor.putInt("n", n);
editor.apply();

获取您的价值;

pref.getInt("n", 0);

以上内容来自上一篇文章; https://stackoverflow.com/a/24099496/4644276

或者,您可以利用存储库模式。用最简单的术语来说,存储库是一个对象,可以在应用程序的整个生命周期中保持不变,因此可以在不同的活动中保持不变。但是,除非您如前所述利用SharePreferences或使用API​​或本地数据库,否则它无法杀死应用程序。

如果您想进一步了解存储库模式,而不是在Android开发人员门户上的应用程序架构指南页中进行讨论。

https://developer.android.com/jetpack/docs/guide