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

1

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

  • 0
    @Override public boolean onKeyDown (int keyCode, событие KeyEvent) {if (keyCode == KeyEvent.KEYCODE_BACK) {// предотвращение реализации по умолчанию предыдущей, просто завершите текущую активность return true; } return super.onKeyDown (keyCode, event); }
Теги:
android-activity
tabactivity

1 ответ

0
Лучший ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню