我有一个主类,它包含两个类对象的数组列表。长话短说,我通过startActivityForResult调用一个活动,以返回微调器项目选择的位置。我在主活动中有两个布尔变量,它们基本上告诉应用程序正在使用哪个列表:布尔值listASelected和listBSelected。如果listASelected=true,则listBSelected=false,反之亦然。在结果活动中,我基本上是这样生成微调器的:
MainActivity mainAct = new MainAtivity();
Spinner dropdown = (Spinner)findViewById(R.id.mainMenu);
for(int i = 0;i<mainAct.pickThreeNumbers.size(); i++){
optionsPickThree.add(mainAct.pickThreeNumbers.get(i).getNumbers(1)+mainAct.pickThreeNumbers.get(i).getNumbers(2)+mainAct.pickThreeNumbers.get(i).getNumbers(3));
}
for(int r = 0; r<mainAct.pickFourNumbers.size();r++){
optionsPickFour.add(mainAct.pickFourNumbers.get(r).getNumbers(1)+mainAct.pickFourNumbers.get(r).getNumbers(2)+mainAct.pickFourNumbers.get(r).getNumbers(3)+mainAct.pickFourNumbers.get(r).getNumbers(4));
}
if(mainAct.pickThreeSelected){
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, optionsPickThree);
}else{
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, optionsPickFour);
}
dropdown.setAdapter(adapter);
然后,我用这个来做我的setResult。
Intent output = new Intent();
if(mainAct.pickThreeSelected){
output.putExtra("slot", position);
output.putExtra("list", "PickThree");
}else{
output.putExtra("slot", position);
output.putExtra("list", "PickFour");
}
setResult(1,output);
finish();
}
问题是,nomatter总是像mainAct.pickThreeSelected=true一样工作,即使我知道它是false,因为应用程序的其他部分运行正常。我假设发生的情况是,类对象在执行时访问变量的初始化值,而不是当前值。否则,我就是个白痴,有另一种方法可以做到这一点。
有什么帮助吗,伙计们?提前感谢!
将pickThreeSelected设为静态。这样你每次都会更新同一个实例。
您为mainAct.pickThreeSelected设置的默认值是多少??如果它是真的,就把它当作假的。然后,如果用户选择了listA,则将该值更改为true。