Android工作室问题继续增加计数器
Android studio problem continue increasing counter
我正在尝试制作游戏的一部分,当您按下 fab 图标 TextView 时,数字会增加。它从零开始并增加一。
我试着保存了这个数字,以便下次找到它,启动应用程序并继续增加它。
我是储蓄的新手,我搜索了一下。
我写了一个代码,当我关闭它并重新打开它时,它会保留数字,但是当我按下 fab 图标时,它会从头开始,而不是从我保存的数字开始。
也许我不太了解保存代码的工作原理。
谁能帮我?谢谢!!
我在 MainActivity 中的代码是:
int newAge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final TextView age = (TextView) findViewById(R.id.age);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
newAge++;
age.setText(String.valueOf(newAge));
}
});
//getting preferences
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
int savedAge = prefs.getInt("key", 0); //0 is the default value
age.setText(String.valueOf(savedAge));
}
@Override
protected void onStop(){
super.onStop();
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("key", newAge);
editor.commit();
}
您必须将 savedAge
应用到 newAge
,因为一旦您从 SharedPreferences
加载您的年龄,您只需将加载的年龄应用到 TextView,如果您单击按钮,TextView 将显示 1 而不是您保存的值。
int newAge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final TextView age = (TextView) findViewById(R.id.age);
//getting preferences
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
int savedAge = prefs.getInt("key", 0); //0 is the default value
age.setText(String.valueOf(savedAge));
newAge = savedAge; //set the age value, to further increase it by a button click
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
newAge++;
age.setText(String.valueOf(newAge));
}
});
}
@Override
protected void onStop(){
super.onStop();
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("key", newAge);
editor.commit();
}
尝试通读 this,以更好地理解 Android 中的 SharedPreferences。
我正在尝试制作游戏的一部分,当您按下 fab 图标 TextView 时,数字会增加。它从零开始并增加一。 我试着保存了这个数字,以便下次找到它,启动应用程序并继续增加它。 我是储蓄的新手,我搜索了一下。
我写了一个代码,当我关闭它并重新打开它时,它会保留数字,但是当我按下 fab 图标时,它会从头开始,而不是从我保存的数字开始。 也许我不太了解保存代码的工作原理。 谁能帮我?谢谢!!
我在 MainActivity 中的代码是:
int newAge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final TextView age = (TextView) findViewById(R.id.age);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
newAge++;
age.setText(String.valueOf(newAge));
}
});
//getting preferences
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
int savedAge = prefs.getInt("key", 0); //0 is the default value
age.setText(String.valueOf(savedAge));
}
@Override
protected void onStop(){
super.onStop();
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("key", newAge);
editor.commit();
}
您必须将 savedAge
应用到 newAge
,因为一旦您从 SharedPreferences
加载您的年龄,您只需将加载的年龄应用到 TextView,如果您单击按钮,TextView 将显示 1 而不是您保存的值。
int newAge;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final TextView age = (TextView) findViewById(R.id.age);
//getting preferences
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
int savedAge = prefs.getInt("key", 0); //0 is the default value
age.setText(String.valueOf(savedAge));
newAge = savedAge; //set the age value, to further increase it by a button click
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
newAge++;
age.setText(String.valueOf(newAge));
}
});
}
@Override
protected void onStop(){
super.onStop();
SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt("key", newAge);
editor.commit();
}
尝试通读 this,以更好地理解 Android 中的 SharedPreferences。