大家好,我想使用一个全局整数变量,我将根据用户正确或错误的选择在 7 个不同的活动中递增该变量。问题是每次我在每个不同的活动中实现变量时,值都不会保留。相反,我得到了变量的默认值。我想要的是,当我在下一个变量中再次使用它时,我对变量所做的每个增量都被保存。任何帮助表示赞赏。我试过但失败了:
public class MyApplication extends Application {
private int grade=0;
public int setGrade(int grade) {
this.grade = grade;
}
public int getGrade() {
return grade;
}
}
public class lessonOnePhoto extends Activity {
private int grade = ((MyApplication) this.getApplication()).getGrade();
if (rbtn[0].getText().toString().equals("Boy")) {
grade++;
}
else {
Toast.makeText(getApplicationContext(),"Wrong Choise",Toast.LENGHT_SHORT).show();
}
}
递增的grade
是本地的,并且与您的活动无关。 它也是一个原语,而不是一个对象,所以grade = .getGrade()
将局部变量设置为与全局值相同的值,它不是某种引用。
相反,请执行如下操作:
MyApplication myApplication = ((MyApplication) this.getApplication());
myApplication.setGrade(myApplication.getGrade()++);
或者实施递增递减方法。
public class MyApplication extends Application {
private int grade=0;
public int setGrade(int grade) {
this.grade = grade;
}
public int getGrade() {
return grade;
}
public void incrementGrade() {
grade++;
}
public void decrementGrade() {
grade--;
}
您必须递增原始应用程序值..而不是副本以维护活动之间的变量
if (rbtn[0].getText().toString().equals("Boy")) {
grade++;
}
更改为
if (rbtn[0].getText().toString().equals("Boy")) {
((MyApplication) this.getApplication()).setGrade(grade++)
}
可以在应用程序类中添加一种方法来递增值
public class MyApplication extends Application {
private int grade=0;
public int incrementGrade() {
this.grade = grade + 1;
}
public int setGrade(int grade) {
this.grade = grade;
}
public int getGrade() {
return grade;
}
}
并在需要时递增
MyApplication myApplication = ((MyApplication) this.getApplication());
myApplication.incrementGrade();
或 ====
=============通过以静态方式访问该成绩来使该成绩静态并递增
public static int grade = 0;
访问它躺着这个
MyApplication.grade ++;
您可以从用户输入响应的活动获取结果,并从管理所有响应的 MainActivity 处理它。
避免在应用程序类中存储信息的另一个选项是使用具有存储全局变量的共享实例的单一实例。但是,在某些情况下,使用单例被认为是一种不好的做法。