首页 > 代码库 > Android TabHost切换选项卡实现数据实时刷新

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(); // 得到浏览本人发布得板报的方法                }            }        });}

 

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