大家好我想利用一个全局整数变量,我将根据用户的对错选择在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();
}
}
答案 0 :(得分:2)
您正在递增的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--;
}
答案 1 :(得分:0)
您必须增加原始应用程序值..而不是复制以在活动之间维护变量
if (rbtn[0].getText().toString().equals("Boy")) {
grade++;
}
更改为
if (rbtn[0].getText().toString().equals("Boy")) {
((MyApplication) this.getApplication()).setGrade(grade++)
}
答案 2 :(得分:0)
您可以在应用程序类中添加一个方法来增加值
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 ++;
答案 3 :(得分:0)
您可以get the result from the activities用户输入回复并从管理所有回复的MainActivity处理回复。
避免在Application类中存储信息的另一个选择可能是使Singleton具有存储全局变量的共享实例。但是,在some cases中使用单身人士被认为是一种不好的做法。