Функциональность кнопки «Назад» в Android TabActivity с несколькими дочерними действиями

у меня есть TabActivity в проекте Android, который содержит несколько вкладок. На каждой вкладке я могу открывать различные действия, и после открытия на вкладке я хочу вернуться к предыдущему действию на той же вкладке, но поведение Android по умолчанию закрывает мою корневую вкладку. Как я могу реализовать поведение, которое мне нужно?


person Dmitriy Tarasov    schedule 15.04.2011    source источник
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