У меня есть относительно простое приложение для Android с одним Activity
, показывающим список элементов, а другой - подробные сведения о выбранном элементе. Я запускаю активность списка, которая является моей самой верхней активностью (используя FLAG_ACTIVITY_CLEAR_TOP
, чтобы очистить активность входа, из которой это вызвано):
Intent intent = new Intent(this, ListInstancesActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
и изнутри этого действия я воздействую на элемент, выбранный с помощью:
Intent detailIntent = new Intent(this, ShowInstanceActivity.class);
detailIntent.putExtra(ShowInstanceFragment.ARG_ITEM_ID, id);
startActivity(detailIntent);
Все работает нормально, и если я использую кнопку "назад" программной клавиши, я возвращаюсь к ListInstancesActivity
, как и следовало ожидать. Однако, если вместо этого я нажимаю кнопку "назад/вверх" на панели действий, тогда он уничтожает и воссоздает ListInstancesActivity
. Это плохо, так как это относительно дорого стоит сделать.
Как заставить панель действий вести себя так же, как и функциональная клавиша, и просто вернуться к предыдущей операции, а не уничтожить ее.
Следует отметить, что я использую версию библиотеки поддержки для панели действий.
Соответствующими частями моего AndroidManifest.xml
являются
<activity
android:name=".agenda.ListInstancesActivity"
android:label="@string/list_instances_activity_title">
</activity>
<activity
android:name=".agenda.ShowInstanceActivity"
android:label="@string/show_instance_activity_title"
android:parentActivityName=".agenda.ListInstancesActivity">
</activity>