我在我的应用程序中创建了一个自定义标签栏(使用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个标签中,我想接收LocationUpdates,但在将位置更新提供给标签Activity
之前,我需要进行一些验证。
我想要做的是在我的TabActivity
中接收位置更新,进行处理然后在当前标签Activity
中调用某些方法,但是我无法从tabHost访问它。有没有办法做到这一点?
答案 0 :(得分:1)
如果它们都是活动,那么您可以使用ActivityGroup的东西,因为TabActivity扩展了ActivityGroup。您需要定义一个位置接口或您的所有活动实现的东西,以避免崩溃或进行检查。此外,如果你不太远,你应该考虑使用兼容性库和使用片段,因为tabactivity和activitygroup已被弃用
LocalActivityManager m = getLocalActivityManager();
((LocationInterface)m.getCurrentActivity()).sendLocation();