亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法在屏幕旋轉時保留菜單項

無法在屏幕旋轉時保留菜單項

郎朗坤 2021-05-31 13:53:33
我在其中創建了一個菜單項 (Spinner).onCreateOptionsMenu并希望保留屏幕旋轉時的選擇。我知道使用 是常見的做法SharedPreferences,但是在這種情況下我有點困惑,因為我沒有在 中創建我的視圖.onCreate(),我通常會在那里加載我保存的首選項:    @Overridepublic boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.action_bar_spinner, menu);    MenuItem item = menu.findItem(R.id.spinner);    mSpinner = (Spinner) item.getActionView();    int selectedPosition = mPrefs.getInt(SPINNER_SELECTION, 0);    mSpinner.setSelection(selectedPosition);    if (isOnline()) {        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.spiner_list_item_array, R.layout.custom_spinner);        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);        mSpinner.setAdapter(adapter);        mSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {                mPrefsEditor.putInt(SPINNER_SELECTION, i);                mPrefsEditor.commit();                switch (i) {                    case 0:                        mBaseURL = "https://api.themoviedb.org/3/movie/popular/";                        calltoRetrofit(mBaseURL);                        break;                    case 1:                        mBaseURL = "https://api.themoviedb.org/3/movie/top_rated/";                        calltoRetrofit(mBaseURL);                        break;                    case 2:                        mIsFavoriteSelected = true;                        mMovieURLS.clear();                        retrieveMovies();                        break;                    default:                        mBaseURL = "https://api.themoviedb.org/3/movie/popular/";                        break;                }            }
查看完整描述

1 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

首先,以onCreate.以外的其他方法訪問 SharedPreferences 是完全有效的。如果您在這篇文章中遇到一些問題,請查看錯誤消息/問題。


其次,為了在屏幕旋轉時保留內容,您可以onSaveInstanceState在 Activity 中使用 來保存微調器選擇并onCreate在屏幕旋轉時獲得狀態。例如:


private int saved_selection = -1


@Override

protected void onCreate(Bundle savedInstanceState) {

    //...


    if (savedInstanceState != null) {

        saved_selection = savedInstanceState.getInt("SPINNER_SELECTION");

    }


    //...

}


@Override

public void onSaveInstanceState(Bundle outState) {

    outState.putInt("SPINNER_SELECTION", saved_selection);


    // call superclass to save any view hierarchy

    super.onSaveInstanceState(outState);

}


@Override

public boolean onCreateOptionsMenu(Menu menu) {

    //...

    // set `saved_selection = i;`  in your adapter

    //...

    if( saved_selection >= 0 ) {

        mSpinner.setSelection(saved_selection);

    }

}


查看完整回答
反對 回復 2021-06-02
  • 1 回答
  • 0 關注
  • 179 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號