标签:
手机界面大小有限,使用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(); // 得到浏览本人发布得板报的方法 } } }); }
标签:
原文地址:http://www.cnblogs.com/zhujiabin/p/4223359.html