標籤:
手機介面大小有限,使用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切換選項卡實現資料即時重新整理