Android: как динамически изменять открытую вкладку - PullRequest
0 голосов
/ 15 октября 2010

У меня есть приложение для Android, которое имеет четыре вкладки (я использую основной TabActivity с TabHost и TabSpecs). В одном из моих подзадач (действие, открытое на вкладке), мне нужно открыть вкладку, не нажимая на заголовок вкладки, и я не знаю, как это сделать. Например, у меня есть кнопка в моей деятельности, и когда я нажимаю на нее, она открывает другую вкладку. На данный момент это то, что я делаю:
<br> Intent intent = new Intent(myActivity.this, myTabActivity.class);<br> intent.putExtra("ComeFrom", true);<br> intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);<br> startActivity(intent);<br>
Затем в TabActivity, если я получаю правду, читая дополнительную информацию «ComeFrom», я открываю желаемую вкладку, но проблема в том, что она убивает все остальные действия. Итак, если кто-то знает лучший (чище) способ сделать этот трюк, пожалуйста, скажите мне ...

Ответы [ 4 ]

5 голосов
/ 03 февраля 2011

Нашел более легкий (я думаю) ответ:

  1. в TabActivity объявляет public, static и self variable и заполняет его в методе onCreate. F.e.:

    public class TheActivity extends TabActivity {
        public static TheActivity self;
        ...
        @Override
        public void onCreate(Bundle savedInstanceState) {
            self=this;
    
  2. в любой Активности, запущенной на вкладке, когда вы хотите изменить ту, которая отображается в вашем приложении. Вы можете сделать это:

    TabHost tabHost = TheActivity.self.getTabHost();
    tabHost.setCurrentTab(0);
    

У меня все в порядке, надежда служит кому-то еще!

0 голосов
/ 15 октября 2010

Вы можете создать BroadcastReceiver и отправить широковещательную рассылку с дополнительным индексом вкладки

0 голосов
/ 16 октября 2010

Вы можете использовать представления вместо действий для содержимого вкладок.Таким образом, код становится проще и не занимает столько памяти.Кроме того, вы можете использовать метод setCurrentTab(tabIndex) для простого переключения между представлениями.

У меня есть простое руководство здесь .Имеет вкладку со списком и представлением карты.Когда вы нажимаете на элемент в списке, действие динамически переходит в представление карты (с использованием метода setCurrentTab(tabIndex)).Вы можете легко изменить это, чтобы иметь вид переключателя кнопки.

0 голосов
/ 15 октября 2010

Для этого вы должны использовать TabCost "setCurrentTab (...)". В одном из моих проектов я создал статический метод в главном Activity (тот, что с TabHost) с именем «swtichToTab (int tab)». В моих субактивах (те, что внутри вкладок) можно было бы просто вызвать «MainActivity.switchToTab ()» для запуска переключения.

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

...