簡體   English   中英

屏幕方向更改時如何處理微調框?

[英]How to handle Spinners when screen orientation changes?

我有兩個微調器。 onCreate我為他們設置監聽器。 在其他一些地方,我會填充它們。

現在,我不確定在屏幕方向發生變化時處理這些微調框的最佳做法是什么。 我應該將所有值和選定的項目以某種方式存儲在sharedPreferences還是保存在savedInstanceState

如果可以的話,請以一種首選的方式告訴我,並包括一些處理微調框的示例代碼。 此處的目標是在生命周期中保留值和所選項目。

我將根據要求或在需要時提供代碼。

謝謝

嘗試此操作, 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
    }
}

在您的AndroidManifest文件中添加android:configChanges="orientation|screenSize" ,它將在方向更改時保持選定的微調器值。

用戶微調器是這樣的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM