2010-07-08 3 views
4

Вот и проблема. В моем приложении у меня есть 5 вкладок, которые содержат действия. В каждом из них я должен показывать разные экраны. Например, основное действие вкладки - это список, и когда я нажимаю на один из его элементов, я хочу отобразить второй экран с другим списком, который отобразит другой экран, когда пользователь выберет элемент и т. Д.Как управлять многократными действиями под одной вкладкой TabActivity

Так что я знал, что действия на вкладках непросто управлять, но я действительно думаю, что мне нужно это решение. Действительно, каждый экран должен содержать кнопку «Назад», которая вернется к предыдущему экрану, с предыдущим состоянием (та же позиция в списке).

Чтобы начать новую деятельность в закладках, я использовал метод, описанный здесь http://gamma-point.com/content/android-how-have-multiple-activities-under-single-tab-tabactivity

Он работает в основном хорошо, но я сталкиваюсь с проблемой, чтобы вернуться к прежней деятельности. Мое решение в настоящий момент состоит в том, чтобы начать предыдущую деятельность, как описано на этом веб-сайте, но без какого-либо флага.

Так вот мои две реальные проблемы:

  • Когда я пытаюсь вернуться к первой и основной деятельности вкладки, это кажется, что создается новый экземпляр, даже если я использую флаг Intent.FLAG_ACTIVITY_CLEAR_TOP. Поэтому, когда я делаю несколько раундов между этой деятельностью и следующей, я получаю StackErrorOverFlow.

  • Поскольку деятельность доступна из разных видов деятельности, я должен постоянно запоминать действия родителей, предоставляя их в намерениях. Это действительно тяжело, когда у меня есть последовательность из 5 или 6 экранов, я должен запомнить великого родителя, если это действие ... Я очень признателен, если бы я мог назвать последнее действие, начатое локальным агентом.

Спасибо за вашу помощь, и если я не понятно, пожалуйста, дайте мне знать!

ответ

2

Ok, решение (с учетом на указанном выше сайте), был таков:

this.m_backButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    Intent intent = new Intent(v.getContext(), Activity1.class); 
    Activity1 parentActivity = (Activity1)getParent(); 
    parentActivity.replaceContentView("activity1", intent, 
       Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
    } 
}); 

и достаю главный activitity от ActivityGroup. Вы можете увидеть ответ здесь: http://gamma-point.com/content/android-how-have-multiple-activities-under-single-tab-tabactivity#comment-4

1

У меня есть проблема с этим кодом. Я не знаю, как обращаться с кнопкой андроида назад. У меня есть графическая кнопка для возврата к последнему действию с помощью метода, показанного выше, но если я попытаюсь добавить это поведение на кнопку физического возврата устройства, это не сработает. Я попытался с onKeyPressent с событием KEY_BACK, но он никогда не входит в этот раздел кода.

Кроме того, с этой техникой субактивитов у меня нет скользящей анимации, когда я запускаю новую. Я пытаюсь добавить анимацию вручную, но я не могу использовать хорошую технику, потому что это лага:

public void replaceContentView(String id, Intent newIntent, int flag) { 
    View view = mLocalActivityManager.startActivity(id, newIntent.addFlags(flag)).getDecorView(); 

    Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_right); 
    view.startAnimation(animation); 
    this.setContentView(view); 
} 

Благодаря

3

У меня был тот же самый вопрос, который я считаю, у меня есть очень хороший ответ с некоторыми примерами кода в этой статье в блоге я только что написал. multiple-android-acitivities

Сообщите мне, если это полезно или требуется улучшение.

+0

Это было здорово, спасибо большое. –

Смежные вопросы