2015-08-03 24 views
0

微調項目我想要實現的動作條,這種種基於人氣,評級和電影收入如何保持其在動作條

這裏旋項目的活動的初始狀態,我整理基礎上最高評級,然後單擊電影項目以顯示「電影項目詳細信息」。

實現步驟:當我點擊詳細信息頁面的後退按鈕時,它會轉到上一頁(按最高評分排序),但當我點擊DetailsActivity的主頁按鈕(操作欄中的上按鈕)時,在MainActivity表示由熱門程度排序,而不是由最高收視率

下面是代碼實現菜單項

public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
inflater.inflate(R.menu.forecast_fragment_menu, menu); 
MenuItem item = menu.findItem(R.id.action_settings); 
    Spinner spinner = (Spinner) MenuItemCompat.getActionView(item); 
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(), R.array.sortBy_Entries, android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

      String[] sortByEntriesList = getResources().getStringArray(R.array.sortBy_Entries); 
      String[] sortByValuesList = getResources().getStringArray(R.array.sortBy_Values); 
      SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity()); 
      String mSortOrder = sharedPreferences.getString(SORT_ORDER, SORT_ORDER_DEFAULT_VALUE); 

      CheckedTextView textView = (CheckedTextView) view; 
      String sortBy = (String) textView.getText(); 
      if (sortBy.equals(sortByEntriesList[0])) { 
       mSortOrder = sortByValuesList[0]; 
      } else if (sortBy.equals(sortByEntriesList[1])) { 
       mSortOrder = sortByValuesList[1]; 
      } else if (sortBy.equals(sortByEntriesList[2])) { 
       mSortOrder = sortByValuesList[2]; 
      } 

      SharedPreferences.Editor editor = sharedPreferences.edit(); 
      editor.putString(SORT_ORDER,mSortOrder); 
      editor.commit(); 

      updateMovies(); 
     } 

這就是我所理解的列表,該錯誤造成的,因爲家用/向上按鈕對Mainactivity的destoy觀點,然後重新創建MainActivity,(暗示它再次進入onCreateOptionsMenu)

而單擊後退按鈕時,該MainAcitvity不被破壞,因爲它在的onStop狀態和按後退按鈕它進入在onStart狀態,

(另一種看法,在Mainactivity改變微調項目時只setOnItemSelectedListener被稱爲不onCreateOptionsMenu。)

我的問題是,如何按向上鍵

回答

0

您可以使用此代碼放在一個包中的微調項的位置時保留排序清單的初始狀態,當t時用於恢復位置他的活動恢復。只需將這些行添加到類中,並將您的微調對象的名稱更改爲公共名稱即可。您的微調必須在onCreate void之外訪問!

String spinnerPosition = "spinnerPosition"; 

// Saves the state upon rotating the screen/restarting the activity 
    @Override 
    protected void onSaveInstanceState(Bundle bundle) { 
     super.onSaveInstanceState(bundle); 
     bundle.putInt(spinnerPosition , mSpinner.getSelectedItemPosition()); 
    } 

    // Restores the state upon rotating the screen/restarting the activity 
    @Override 
    protected void onRestoreInstanceState(Bundle bundle) { 
     super.onRestoreInstanceState(bundle); 
     mSpinner.setSelection(bundle.getInt(spinnerPosition));   
    } 
+0

我認爲這更多的是一個問題http://stackoverflow.com/questions/16657421/back-and-nav-up-have-different-results 向上按鈕被重建在MainActivity,而後退按鈕重新開始活動。我發現霍斯提出的解決方案不起作用 –

+0

我把它看作是一個問題stackoverflow.com/questions/16657421/...向上按鈕重新創建MainActivity,而backButton重新開始活動。我發現解決方案霍斯建議不起作用。相反,我試着用這個代碼在onOptionsItemSelected if(id == android.R.id.home){ Intent intent = NavUtils.getParentActivityIntent(this); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); NavUtils.navigateUpTo(this,intent); 返回true; } –

+0

您可以做什麼,將Spinner項目保存到設置中,並在活動重新創建後從設置中讀取。 http://developer.android.com/guide/topics/ui/settings.html – tim687

相關問題