结果活动中主要活动的对象没有正确访问布尔变量?

时间:2013-08-26 01:04:12

标签: java android

我有一个主类,它包含两个类对象的数组列表。长话短说,我通过startActivityForResult调用一个活动来获取一个微调项目选择位置的返回。我在main活动中有两个布尔变量,它们基本上告诉应用程序使用哪个列表:booleans 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,它总是起作用,即使我知道它是假的,因为应用程序的其他部分正常运行。我假设发生的事情是类对象在执行时访问变量的初始化值而不是它们的当前值。那,或者我是个白痴,并且有不同的方法来实现这一目标。

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

2 个答案:

答案 0 :(得分:0)

你为mainAct.pickThreeSelected设置的默认值是什么?如果是true,则将其设为false。然后,如果用户选择listA,则将值更改为true。

答案 1 :(得分:0)

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