2015-08-03 15 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

相关问题