Android标签栏:访问当前标签活动

时间:2011-11-11 16:45:20

标签: android tabbar tabactivity

我在我的应用程序中创建了一个自定义标签栏(使用TabHostTabWidget)。但是在我的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访问它。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

如果它们都是活动,那么您可以使用ActivityGroup的东西,因为TabActivity扩展了ActivityGroup。您需要定义一个位置接口或您的所有活动实现的东西,以避免崩溃或进行检查。此外,如果你不太远,你应该考虑使用兼容性库和使用片段,因为tabactivity和activitygroup已被弃用

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