2010-10-15 3 views
0

У меня есть приложение для Android, которое имеет четыре вкладки (я использую основную TabActivity с TabHost и TabSpecs). В одном из моих вспомогательных действий (активность открыта на вкладке) мне нужно открыть вкладку, не нажав на заголовок вкладки, и я не знаю, как это сделать. Например, у меня есть кнопка в моей деятельности, и когда я нажимаю на нее, она открывает другую вкладку. На данный момент, это то, что я делаю:

Intent intent = new Intent(myActivity.this, myTabActivity.class);
intent.putExtra("ComeFrom", true);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

Тогда в TabActivity, если я получаю истинное чтение «ComeFrom» экстры я открыть вкладку желает, но проблема в том, что он убивает все остальные activies. Итак, если кто-то знает лучший (более чистый) способ сделать этот трюк, пожалуйста, скажите мне ...Android: Как динамически менять открытую вкладку

ответ

0

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

Возможно, это не самый чистый метод, я уверен, что вы можете достичь этого, используя трансляции.

+0

Thanks; это работает нормально для моих текущих потребностей;) – homega52

0

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

0

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

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

5

Обнаружили проще (я думаю) ответ:

  1. на TabActivity объявить общественности, статическую и самостоятельной переменной и заселить его на методе 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); 
    

работал нормально для меня, надеюсь, что кто-то еще служит!

+2

Это может быть хороший способ решить эту проблему, спасибо Zalakain! – homega52

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