#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 для доступа к другим действиям. проблема в том, что все действия должны иметь уникальный идентификатор, и я не уверен, что вы знаете идентификаторы двух других вкладок.