Java 在活动之间保存微调器的状态
我对android非常陌生,但在保存我的活动状态,特别是我的微调器以保持其价值时遇到了困难 我已经尝试了savedinstancestate和preferences,但我仍然无法使两者都起作用,只是想知道是否有人可以看看我的代码,看看我哪里出了问题Java 在活动之间保存微调器的状态,java,android,Java,Android,我对android非常陌生,但在保存我的活动状态,特别是我的微调器以保持其价值时遇到了困难 我已经尝试了savedinstancestate和preferences,但我仍然无法使两者都起作用,只是想知道是否有人可以看看我的代码,看看我哪里出了问题 public class YearOneActivity extends AppCompatActivity { Button ButtonSubmit; Spinner SpinnerGradesUnitOne, SpinnerGradesUni
public class YearOneActivity extends AppCompatActivity {
Button ButtonSubmit;
Spinner SpinnerGradesUnitOne, SpinnerGradesUnitTwo, SpinnerGradesUnitThree, SpinnerGradesUnitSix, SpinnerGradesUnitNine, SpinnerGradesUnitTwentySix, SpinnerGradesUnitEighteen, SpinnerGradesUnitTwentyEight, SpinnerGradesUnitFortyThree;
int spinnerUnit1;
public void SubmitMainActivity(){
ButtonSubmit = (Button)findViewById(R.id.button_submit);
ButtonSubmit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent SubmitMainActivity = new Intent(YearOneActivity.this, MainActivity.class);
startActivity(SubmitMainActivity);
}
});
}
public void SpinnerGrades(){
SpinnerGradesUnitOne = (Spinner) findViewById(R.id.spinner_grades_unit_one);
SpinnerGradesUnitTwo = (Spinner) findViewById(R.id.spinner_grades_unit_two);
SpinnerGradesUnitThree = (Spinner) findViewById(R.id.spinner_grades_unit_three);
SpinnerGradesUnitSix = (Spinner) findViewById(R.id.spinner_grades_unit_six);
SpinnerGradesUnitNine = (Spinner) findViewById(R.id.spinner_grades_unit_nine);
SpinnerGradesUnitTwentySix = (Spinner) findViewById(R.id.spinner_grades_unit_twentysix);
SpinnerGradesUnitEighteen = (Spinner) findViewById(R.id.spinner_grades_unit_eighteen);
SpinnerGradesUnitTwentyEight = (Spinner) findViewById(R.id.spinner_grades_unit_twentyeight);
SpinnerGradesUnitFortyThree = (Spinner) findViewById(R.id.spinner_grades_unit_fortythree);
String[] spinnerArrayGrades = getResources().getStringArray(R.array.spinner_grades);
ArrayAdapter<String> adapterGrades = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinnerArrayGrades);
SpinnerGradesUnitOne.setAdapter(adapterGrades);
SpinnerGradesUnitTwo.setAdapter(adapterGrades);
SpinnerGradesUnitThree.setAdapter(adapterGrades);
SpinnerGradesUnitSix.setAdapter(adapterGrades);
SpinnerGradesUnitNine.setAdapter(adapterGrades);
SpinnerGradesUnitTwentySix.setAdapter(adapterGrades);
SpinnerGradesUnitEighteen.setAdapter(adapterGrades);
SpinnerGradesUnitTwentyEight.setAdapter(adapterGrades);
SpinnerGradesUnitFortyThree.setAdapter(adapterGrades);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_year_one);
if (savedInstanceState != null){
SpinnerGradesUnitOne.setSelection(savedInstanceState.getInt("spinnerUnit1", 0));
SpinnerGradesUnitTwo.setSelection(savedInstanceState.getInt("spinnerUnit2", 0));
SpinnerGradesUnitThree.setSelection(savedInstanceState.getInt("spinnerUnit3", 0));
SpinnerGradesUnitSix.setSelection(savedInstanceState.getInt("spinnerUnit6", 0));
SpinnerGradesUnitNine.setSelection(savedInstanceState.getInt("spinnerUnit9", 0));
SpinnerGradesUnitTwentySix.setSelection(savedInstanceState.getInt("spinnerUnit26", 0));
SpinnerGradesUnitEighteen.setSelection(savedInstanceState.getInt("spinnerUnit18", 0));
SpinnerGradesUnitTwentyEight.setSelection(savedInstanceState.getInt("spinnerUnit28", 0));
SpinnerGradesUnitFortyThree.setSelection(savedInstanceState.getInt("spinnerUnit43", 0));
}
SubmitMainActivity();
SpinnerGrades();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("spinnerUnit1", SpinnerGradesUnitOne.getSelectedItemPosition());
outState.putInt("spinnerUnit2", SpinnerGradesUnitTwo.getSelectedItemPosition());
outState.putInt("spinnerUnit3", SpinnerGradesUnitThree.getSelectedItemPosition());
outState.putInt("spinnerUnit6", SpinnerGradesUnitSix.getSelectedItemPosition());
outState.putInt("spinnerUnit9", SpinnerGradesUnitNine.getSelectedItemPosition());
outState.putInt("spinnerUnit26", SpinnerGradesUnitTwentySix.getSelectedItemPosition());
outState.putInt("spinnerUnit18", SpinnerGradesUnitEighteen.getSelectedItemPosition());
outState.putInt("spinnerUnit28", SpinnerGradesUnitTwentyEight.getSelectedItemPosition());
outState.putInt("spinnerUnit43", SpinnerGradesUnitFortyThree.getSelectedItemPosition());
}
公共类YearOneActivity扩展了AppCompatActivity{
按钮提交;
喷丝头喷丝头等级SUnitone、喷丝头等级SUnittwo、喷丝头等级SUnitthree、喷丝头等级SUnitix、喷丝头等级SUnitnine、喷丝头等级SUnitwenty六、喷丝头等级SUniteight、喷丝头等级SUnitwenty八、喷丝头等级SUnitthree;
int喷丝头1;
公共无效提交不活动(){
ButtonsSubmit=(Button)findViewById(R.id.Button\u submit);
ButtonsSubmit.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent SubmitMainActivity=新的Intent(YearOneActivity.this,MainActivity.class);
STARTACTIVE(不活动);
}
});
}
公共空间喷丝板等级(){
喷丝头等级SUNITONE=(喷丝头)findViewById(R.id.喷丝头等级单位);
喷丝头等级SUnittwo=(喷丝头)findViewById(R.id.喷丝头等级单位二);
喷丝头等级SUnitthree=(喷丝头)findViewById(R.id.喷丝头等级单位三);
喷丝头等级SUNITSIX=(喷丝头)findViewById(R.id.喷丝头等级单位六);
喷丝头等级SUnitnine=(喷丝头)findViewById(R.id.喷丝头等级单位);
喷丝头等级SUnitwentysix=(喷丝头)findViewById(R.id.喷丝头等级单位二十六);
喷丝头等级SUNITEIGHTEEN=(喷丝头)findViewById(R.id.喷丝头等级单位十八);
喷丝头等级SUnitwentyeight=(喷丝头)findViewById(R.id.喷丝头等级单位二十八);
喷丝头等级SUnitfortyTree=(喷丝头)findViewById(R.id.喷丝头等级单位fortyTree);
String[]spinneraygrades=getResources().getStringArray(R.array.spinner_grades);
ArrayAdapter adapterGrades=新的ArrayAdapter(此,android.R.layout.simple\u微调器\u项,SpinNerayGrades);
喷丝头等级Sunitone.setAdapter(adapterGrades);
喷丝头等级双套适配器(adapterGrades);
喷丝头等级三套适配器(adapterGrades);
喷丝头等级Sunitsix.setAdapter(adapterGrades);
喷丝头等级Sunitnine.setAdapter(adapterGrades);
喷丝头等级不超过26。设置适配器(adapterGrades);
喷丝头等级Suniteighten.setAdapter(adapterGrades);
喷丝头等级不超过二十度。设置适配器(adapterGrades);
喷丝头等级SunitFortythTree.setAdapter(adapterGrades);
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u year\u one);
如果(savedInstanceState!=null){
SpinnerGradesUnitOne.setSelection(savedInstanceState.getInt(“spinnerUnit1”,0));
喷丝头等级ITTWO.setSelection(savedInstanceState.getInt(“喷丝头单元2”,0));
SpinnerGradesUnitThree.setSelection(savedInstanceState.getInt(“spinnerUnit3”,0));
喷丝头等级SUNITSIX.setSelection(savedInstanceState.getInt(“喷丝头单元6”,0));
喷丝头等级sunitnine.setSelection(savedInstanceState.getInt(“喷丝头单元9”,0));
喷丝头等级UnittwentySix.setSelection(savedInstanceState.getInt(“喷丝头单元26”,0));
喷丝头等级SUniteighten.setSelection(savedInstanceState.getInt(“喷丝头单元18”,0));
SpinnerGradeSunitwentyeight.setSelection(savedInstanceState.getInt(“spinnerUnit28”,0));
SpinnerGradeSunitfortyTree.setSelection(savedInstanceState.getInt(“spinnerUnit43”,0));
}
不活动();
喷丝头等级();
}
@凌驾
SaveInstanceState上的公共无效(束超出状态){
super.onSaveInstanceState(超出状态);
outState.putInt(“spinnerUnit1”,SpinnerGradesUnitOne.getSelectedItemPosition());
outState.putInt(“spinnerUnit2”,SpinnerGradesUnitTwo.getSelectedItemPosition());
outState.putInt(“spinnerUnit3”,SpinnerGradesUnitThree.getSelectedItemPosition());
outState.putInt(“spinnerUnit6”,SpinnerGradeSunitix.getSelectedItemPosition());
outState.putInt(“spinnerUnit9”,SpinnerGradesUnitNine.getSelectedItemPosition());
outState.putInt(“spinnerUnit26”,SpinnerGradeSunitwentySix.getSelectedItemPosition());
outState.putInt(“spinnerUnit18”,SpinnerGradeSuniteighten.getSelectedItemPosition());
outState.putInt(“spinnerUnit28”,SpinnerGradeSunitwentyeight.getSelectedItemPosition());
outState.putInt(“spinnerUnit43”,SpinnerGradeSunitfortyTree.getSelectedItemPosition());
}
当您在布局xml中为微调器提供唯一的I'd时,我认为微调器会自动保持其状态。如果不是这样,您应该像以前一样使用onSaveInstanceState。
如果您的代码如上所示,我绝对想知道为什么您没有收到NullpointerException。此时,您在新活动中初始化旧微调器状态之前就设置了它们。因此,请尝试将最后一个方法调用移到If块之前。这样应该可以工作:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_year_one);
SubmitMainActivity();
SpinnerGrades();
if (savedInstanceState != null) {
// ...
}
}
您可能想解释您遇到的问题是什么。我正在尝试让微调器在用户在活动之间导航时保持其选择,目前它们每次都会被擦除。感谢您的回复,我尝试按照您所说的操作,但没有效果,是否有其他方法保存微调器输入?