我有两个Spinners。在onCreate
我为他们设置了听众。在其他一些地方,我填充它们。
现在我不确定在屏幕方向改变时处理这些微调器的最佳做法是什么。我应该以{{1}}某种方式存储所有值和所选项目还是sharedPreferences
?
如果可以的话,请以优先的方式告诉我,并提供一些处理微调器的示例代码。这里的目标是保持值和选定项目的生命周期。
我会根据要求或在需要时提供代码。
由于
答案 0 :(得分:1)
尝试使用onSaveInstanceState
屏幕方向来保存所选的微调器值,根据我的选择shared preference
不是保存微调器选定值的好选择。
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("mySpinner", mySpinner.getSelectedItemPosition());
// do this for each or your Spinner
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// initialize all your visual fields
if (savedInstanceState != null) {
mySpinner.setSelection(savedInstanceState.getInt("mySpinner", 0));
// do this for each of your text views
}
}
答案 1 :(得分:1)
在AndroidManifest文件中添加android:configChanges="orientation|screenSize"
,它会在方向更改时选择微调器值。
User Spinner像这样:
mSpinner = findViewById(R.id.spinner);
ArrayList<String> stringArrayList = new ArrayList<>();
for (int i = 0; i < 6; i++) {
stringArrayList.add("List Item " + i);
}
ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, stringArrayList);
spinner.setAdapter(arrayAdapter);