У меня есть TabActivity в проекте Android, который содержит некоторые вкладки. На каждой вкладке я могу открыть различные действия, а после открытия на вкладке я хочу вернуться к предыдущему действию на той же вкладке, но по умолчанию поведение android по умолчанию закрывает активность в корневой вкладке. Как я могу реализовать поведение, которое мне нужно?
Есть несколько способов сделать это. Первый включает создание настраиваемой GroupActivity, которая будет отслеживать стек из LocalActivityManager, а затем расширять этот класс для каждой из ваших вкладок. Для этого ознакомьтесь с этим руководством:
http://ericharlow.blogspot.com/2010/09/experience-multiple-android-activities.html
Простейший подход состоит в том, чтобы сохранить массив подзаголовков ваших вкладок в вашем первом классе ActivityGroup, а затем переопределить кнопку "Назад". Вот пример кода:
public void replaceContentView(String id, Intent newIntent) {
View view = getLocalActivityManager()
.startActivity(id, newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
viewList.add(view); // Add id to keep track of stack.
this.setContentView(view);
}
public void previousView() {
if(viewList.size() > 0) {
viewList.remove(viewList.size()-1);
if (viewList.size() > 0)
setContentView(viewList.get(viewList.size()-1));
else
initView();
}else {
finish();
}
}
Класс initView() содержит все раздувание исходного вида активности. Таким образом, вы можете вызвать этот метод для восстановления исходного действия, если в массиве больше нет.