Android TabHost切换选项卡实现数据实时刷新

手机界面大小有限,使用TabHost可以达到在一个Activity中放入多个容器(界面)的效果。但存在一个问题是,当数据信息在一个容器(界面)中有所改变时,需要在用户切换选项卡到其他容器(界面)的时候实时刷新数据。

如图,在”发布板报“页面发布新的板报,当用户点击“浏览板报”或者“管理板报”选项卡时要刷新数据——显示出刚刚发布的板报。

技术分享

解决问题的关键在于对选项卡修改事件的监听,根据Tab ID来调用相应的方法。

核心代码:

 

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // ---------------------------Tab布局设置---------------------------------------
        final TabHost tabHost = getTabHost();
        // 设置使用TabHost布局
        LayoutInflater.from(this).inflate(R.layout.highlogined,
                tabHost.getTabContentView(), true);
        // 添加第一个标签页
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("浏览板报")
                .setContent(R.id.tab01));
        // 添加第二个标签页
        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("发布板报")
                .setContent(R.id.tab02));
        // 添加第三个标签页
        tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("管理板报")
                .setContent(R.id.tab03));
        int width = 45; // 设置选项卡的高度和宽度
        int height = 48;
        TabWidget tabWidget = tabHost.getTabWidget();
        for (int i = 0; i < tabWidget.getChildCount(); i++) {
            // 设置高度、宽度,不过宽度由于设置为fill_parent,在此对它没效果
            tabWidget.getChildAt(i).getLayoutParams().height = height;
            tabWidget.getChildAt(i).getLayoutParams().width = width;
        }
        // 设置监听器,实现数据实时刷新
        tabHost.setOnTabChangedListener(new OnTabChangeListener() {
            public void onTabChanged(String tabId) {
                if (tabId.equals("tab1")) {
                    getContents(); // 得到浏览所有板报的方法
                } else if (tabId.equals("tab2")) {
                } else if (tabId.equals("tab3")) {
                    lookOwnBoard(); // 得到浏览本人发布得板报的方法
                }
            }
        });
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。