0

我有一个主类,其中包含两个类对象的数组列表。长话短说,我通过 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();
    }

问题在于它总是像 mainAct.pickThreeSelected = true 一样工作,即使我知道它是错误的,因为应用程序的其他部分运行正常。我假设正在发生的是类对象在执行时正在访问变量的初始化值而不是它们的当前值。那,或者我是个白痴,有一种不同的方法可以做到这一点。

任何帮助,伙计们?提前致谢!

4

2 回答 2

0

您为 mainAct.pickThreeSelected 设置的默认值是多少?如果它为 true,则将其设为 false。然后,如果用户选择 listA,请将值更改为 true。

于 2013-08-26T01:22:01.260 回答
0

将 pickThreeSelected 设为静态。这样你每次都会更新同一个实例。

于 2013-08-26T01:33:57.637 回答