Android TabActivity Кнопка «Назад» с несколькими дочерними действиями - PullRequest
1 голос
/ 15 апреля 2011

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

1 Ответ

0 голосов
/ 13 октября 2011

Есть несколько способов сделать это.Первый включает создание пользовательской 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 () содержит все раздувания исходного вида действия.Таким образом, вы можете вызвать этот метод, чтобы восстановить исходную активность, если в массиве больше нет представлений.

...