我有一个将变量增加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");
}
答案 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开发人员门户上的应用程序架构指南页中进行讨论。