у меня есть TabActivity в проекте Android, который содержит несколько вкладок. На каждой вкладке я могу открывать различные действия, и после открытия на вкладке я хочу вернуться к предыдущему действию на той же вкладке, но поведение Android по умолчанию закрывает мою корневую вкладку. Как я могу реализовать поведение, которое мне нужно?
Функциональность кнопки «Назад» в Android TabActivity с несколькими дочерними действиями
comment
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { // предотвращение реализации по умолчанию, предыдущая просто завершите текущую операцию return true; } вернуть super.onKeyDown(keyCode, событие); }
- person Ganapathy C   schedule 15.04.2011
Ответы (1)
Есть несколько способов сделать это. Первый включает в себя создание пользовательской 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() содержит все расширения представления исходной активности. Таким образом, вы можете вызвать этот метод для повторного создания исходного действия, если в массиве больше нет представлений.
person
SBerg413
schedule
13.10.2011