Начать другое действие внутри FrameLayout TabActivity - PullRequest
5 голосов
/ 03 февраля 2011

Я пытаюсь создать приложение, которое имеет 4 вкладки внизу экрана.

Все они содержат Activity (Intent).

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

Дайте мне знать как можно быстрее, если вы узнаете об этом.


Shaiful

Ответы [ 3 ]

3 голосов
/ 26 июля 2011

Проблема ошибки, возникающей из-за замены действий, может быть решена следующим образом.

Сначала Давайте разберемся в потоке:

  1. Мы имеем вхост вкладок, действие (скажем, список), из которого нам нужно перейти к следующему действию (скажем, подробности для выбранного элемента) на той же вкладке.Для этого мы можем использовать концепцию замены действия. Также устанавливаем флаги для выбранной вкладки и другие, чтобы знать, что детали отображаются сейчас

  2. Когда мы нажимаем назад, мы должны получитьпредыдущее действие под той же вкладкой. Для этого вместо того, чтобы снова заменить действие, мы можем обновить вкладку, используя определенный флаг для вкладки, который был выбран.Кроме того, если флаг для отображения подробностей установлен в true, мы перейдем к списку на той же вкладке, иначе мы перейдем к активности перед вкладкой (обычное использование onBackPressed)

Код можетбыть следующим: ..

  1. Для перехода от списка к деталям ...

(Это может быть в onClickListener)

private OnClickListener textListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        Constants.SHOW_DETAILS = true;
        Intent intent = new Intent(context, DetailsActivity.class);
        replaceContentView("activity3", intent);
        }
};

public void replaceContentView(String id, Intent newIntent) {
    View view = ((ActivityGroup) context)
            .getLocalActivityManager()
            .startActivity(id,
                    newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
            .getDecorView();
    ((Activity) context).setContentView(view);

}
  1. Когда нажата обратная связь, мы перезаписываем на BackPressed в каждом действии на вкладке, чтобы снова перейти к списку с экрана сведений

    @Override
      public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    if (MathHelper.SHOW_DETAILS) {
        Log.e("back", "pressed accepted");
        Constants.LIST_ACTIVITY = 1;
        Constants.SHOW_DETAILS = false;
        Intent intent = new Intent(this, Tab_widget.class);
        startActivity(intent);
        finish();
      }
     }
    

Наиболее важныечасть здесь Constants.LIST_ACTIVITY = 1;он указывает, в какой вкладке мы находимся. Значит, соответствующие действия будут иметь значение 0,1,2 ... и т. д.

Снова, чтобы загрузить правильный список (Activty) при обновлении активности вкладки, мы должнывключить это в TabWidget onCreate после создания вкладок

tabHost.setCurrentTab(Constants.LIST_ACTIVITY);
1 голос
/ 20 июля 2011

В в любой момент может быть только одно действие .Документы об этом здесь

1 голос
/ 15 апреля 2011

Это реализовано в Вкладки с несколькими действиями в одной вкладке .

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

Также необходимо заменить действие на вкладке, однако из дочернего действия. Как это сделать?

...