Я хочу реализовать спиннер позицию в ActionBar, который сортирует фильмы, основанные на популярность, рейтинг и выручкуКак сохранить исходное состояние в деятельности, имеющей Spinner элемент в 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();
}
это, как я понимаю, ошибка вызвана тем, что в дом/Up Button уменьшает представления Mainactivity, а затем повторно создает MainActivity (подразумевая, что он снова входит в onCreateOptionsMenu)
в то время как при нажатии на BackButton, то MainAcitvity не разрушается, как это было в OnStop состоянии, и нажатием на кнопку обратно переходит в OnStart состояние,
(Другое наблюдение, в Mainactivity при смене элемента спиннера только setOnItemSelectedListener называется и не onCreateOptionsMenu.)
Мой вопрос заключается в том, чтобы сохранить исходное состояние отсортированный при нажатии кнопки UP
Я вижу это больше как вопрос http://stackoverflow.com/questions/16657421/back-and-nav-up-have-different-results кнопку со стрелкой вверх воссоздает MainActivity, в то время как BackButton Перезагружает активность. Я заметил, что решение, предлагаемое hoss, не работает –
Я вижу это больше как проблема stackoverflow.com/questions/16657421/... Кнопка вверх воссоздает MainActivity, тогда как backButton перезапускает активность. Я заметил, что решение предложенный хосом, не работает. Вместо этого я попытался с этим кодом в onOptionsItemSelected if (id == android.R.id.home) { Цель намерения = NavUtils.getParentActivityIntent (это); intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); NavUtils.navigateUpTo (это, намерение); return true; } –
Что вы можете сделать, это сохраняет элемент Spinner в настройках и читается из настроек после восстановления вашей acitivtyty. http://developer.android.com/guide/topics/ui/settings.html – tim687