Панель вкладок Android: доступ к текущей активности вкладки

#android #tabbar #tabactivity

#Android #панель вкладок #tabactivity

Вопрос:

Я создал пользовательскую панель вкладок в своем приложении (используя TabHost и TabWidget ). Однако в моем TabActivity я хочу вызвать метод Activity , который выбран в данный момент. Вот пример того, как я инициализирую панель вкладок:

     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabbar);

        TabHost tabHost = getTabHost();
        Intent content;
        Button tabView;
        TabSpec tab;

        content = new Intent(this, Test1.class);
        tabView = new Button(getApplicationContext());
        tabView.setBackgroundDrawable(getResources().getDrawable(R.drawable.btn_tableft_selector));
        tabView.setText("Test1");
        tabView.setTypeface(font);
        tabView.setTextColor(Color.WHITE);
        tabView.setPadding(0, 2, 0, 0);
        tab = tabHost.newTabSpec("test1").setIndicator(tabView).setContent(content);
        tabHost.addTab(tab);

        ...
    }
  

Моя проблема в том, что на моей TabActivity и на всех 3 вкладках я хочу получать обновления местоположения, но мне нужно выполнить некоторую проверку, прежде чем отправлять обновления местоположения на вкладку Activity .
Что я хотел сделать, так это получать обновления местоположения в моем TabActivity , выполнять обработку, а затем вызывать какой-либо метод на текущей вкладке Activity , однако я не могу получить к нему доступ с TabHost. Есть ли способ сделать это?

Ответ №1:

если это все действия, то вы можете использовать содержимое ActivityGroup, поскольку TabActivity расширяет ActivityGroup. Вам нужно будет определить интерфейс местоположения или что-то, что реализуют все ваши действия, чтобы избежать сбоев или выполнять проверки. Также, если вы еще не продвинулись слишком далеко, вам следует рассмотреть возможность использования библиотеки совместимости и использования фрагментов, поскольку tabactivity и activitygroup устарели

  LocalActivityManager m = getLocalActivityManager();
 ((LocationInterface)m.getCurrentActivity()).sendLocation();
  

Комментарии:

1. спасибо, я попробую это на этой неделе и дам вам знать, работает ли это так, как мне было нужно 🙂

2. это сработало именно так, как мне было нужно 🙂 спасибо, брат. Знаете ли вы какой-нибудь хороший учебник по реализации TabActivity с использованием Fragments API?

3. android.codeandmagic.org/2011/07/android-tabs-with-fragments попробуйте, хотя, просмотрев ее, я бы сказал, что вы могли бы немного упростить ее без tabhost. просто с помощью кнопок или чего-то еще. но это хорошее место для начала.

4. Спасибо за ссылку. Попробую это после этого спринта. Что касается моего поста, могу ли я получить доступ ко всем 3 действиям, а не только к текущему?

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