0

クラス オブジェクトの 2 つの配列リストを保持するメイン クラスがあります。簡単に言うと、startActivityForResult を介してアクティビティを呼び出して、スピナー項目選択の位置を取得しています。メイン アクティビティには、基本的にどのリストを処理しているかをアプリケーションに伝える 2 つのブール変数があります。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();
    }

問題は、アプリの他のセクションが適切に機能しているため、それが false であることを知っていても、mainAct.pickThreeSelected = true のように常に機能することです。私が想定しているのは、実行時にクラス オブジェクトが変数の現在の値ではなく、初期化された値にアクセスしていることです。それ、または私はばかで、これを達成する別の方法があります。

助けてくれませんか?前もって感謝します!

4

2 に答える 2

0

pickThreeSelected を静的にします。そうすれば、毎回同じインスタンスを更新できます。

于 2013-08-26T01:33:57.637 に答える