Вверх Всегда следует переходить к иерархическому родительскому элементу активности, а Назад всегда должна перемещаться во времени.
Другими словами, вы должны оставить Назад как есть.
Что касается Up, он всегда должен идти в том же месте независимо от того, откуда он. Поэтому, если вы обычно приходите в DetailsActivity из YourListActivity, Up должен всегда идти туда независимо от того, откуда вы пришли. Самое вероятное место зависит от вашего усмотрения, но оно всегда должно быть одинаковым.
Если вы перейдете к операции с деталями из ненормального местоположения (например, в браузере, другом действии, виджетах или уведомлении), вы должны воссоздать стек задач, чтобы навигация, используя результаты по тому же пути. Вот пример из обучающего Android Developer:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent upIntent = new Intent(this, YourListActivity.class);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
// This activity is not part of the application's task, so
// create a new task
// with a synthesized back stack.
TaskStackBuilder
.from(this)
.addNextIntent(new Intent(this, HomeActivity.class))
.addNextIntent(upIntent).startActivities();
finish();
} else {
// This activity is part of the application's task, so simply
// navigate up to the hierarchical parent activity.
NavUtils.navigateUpTo(this, upIntent);
}
return true;
}
}
Вот Android Обучение Внедрение навигации
(http://developer.android.com/training/implementing-navigation/index.html).
Вам понадобится библиотека поддержки для NavUtils и TaskStackBuilder.
При использовании этого метода родительская активность потеряет все дополнительные функции и состояние. У вас есть все равно, чтобы восстановить его состояние? – sarunw
в соответствии с рекомендациями (http://developer.android.com/design/patterns/navigation.html), назад не следует перемещаться по времени, когда уведомление помещает вас глубоко в приложение. См. Примеры gmail или календаря. – Maragues
@art вы можете попробовать свое решение: http://stackoverflow.com/a/20306670/878126 –