クラス オブジェクトの 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 のように常に機能することです。私が想定しているのは、実行時にクラス オブジェクトが変数の現在の値ではなく、初期化された値にアクセスしていることです。それ、または私はばかで、これを達成する別の方法があります。
助けてくれませんか?前もって感謝します!