屏幕方向改变时如何处理Spinners?

时间:2018-02-03 20:27:21

标签: android android-spinner android-lifecycle

我有两个Spinners。在onCreate我为他们设置了听众。在其他一些地方,我填充它们。

现在我不确定在屏幕方向改变时处理这些微调器的最佳做法是什么。我应该以{{1​​}}某种方式存储所有值和所选项目还是sharedPreferences

如果可以的话,请以优先的方式告诉我,并提供一些处理微调器的示例代码。这里的目标是保持值和选定项目的生命周期。

我会根据要求或在需要时提供代码。

由于

2 个答案:

答案 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);