我想在 actionBar 中实现一个微调项,它根据受欢迎程度、评级和收入对电影进行排序
在这里,我根据最高评分进行排序,然后单击电影项目以显示电影项目详细信息。
实施步骤:当我单击详细信息页面的后退按钮时,它会转到上一页(按最高评级排序)但是当我单击详细信息活动的主页按钮(操作栏中的向上按钮)时,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 的视图,然后重新创建 MainActivity,(暗示它再次进入 onCreateOptionsMenu)
而当单击后退按钮时,MainAcitvity 不会因为它处于 Onstop 状态而被破坏,并且按下后退按钮它会进入 onStart 状态,
(另一个观察,在 Mainactivity 中更改微调器项目时,仅调用 setOnItemSelectedListener 而不是 onCreateOptionsMenu。)
我的问题是如何在按下 UP 按钮时保留排序列表的初始状态