Как управлять несколькими действиями на одной вкладке TabActivity - PullRequest
4 голосов
/ 08 июля 2010

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

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

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

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 24 сентября 2010

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

Дайте мне знать, если это полезно или нуждается в улучшении.

2 голосов
/ 12 июля 2010

Хорошо, решение (приведенное на сайте выше) было таким:

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 ); 
  }
});

и уберите мою основную активность из ActivityGroup.Вы можете увидеть ответ здесь: http://gamma -point.com / content / android-how-have-множественные действия под одной вкладкой-tabactivity # comment-4

1 голос
/ 23 июля 2010

У меня все еще проблема с этим кодом. Я не знаю, как обращаться с кнопкой возврата Android. У меня есть графическая кнопка для возврата к последнему действию с помощью метода, показанного выше, но если я попытаюсь добавить это поведение к физической кнопке возврата устройства, она не будет работать. Я пытался с 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); 
}

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...