首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android TabHost 跳轉後默認標籤內容為空:TabSpec tag 與 setContent ID 不對應

     編輯:程式設計綜合問答

錯誤代碼

spec = tabHost.newTabSpec("Refresh").setIndicator("Refresh").setContent(R.id.contain_tab0);
tabHost.addTab(spec);
spec = tabHost.newTabSpec("Love").setIndicator("Love").setContent(R.id.contain_tab1);
tabHost.addTab(spec);
spec = tabHost.newTabSpec("Comment").setIndicator("Comment").setContent(R.id.contain_tab2);
tabHost.addTab(spec);
spec = tabHost.newTabSpec("Onward").setIndicator("Onward").setContent(R.id.contain_tab0); // 復用 tab0
tabHost.addTab(spec);
spec = tabHost.newTabSpec("Goback").setIndicator("Goback").setContent(R.id.contain_tab1); // 復用 tab1
tabHost.addTab(spec);

問題

TabSpec 的 **tag(第一個參數)必須與 setContent 的 View ID 一一對應**。上述代碼中 "Onward" 對應 `contain_tab0`,"Goback" 對應 `contain_tab1`,導致默認顯示 "Refresh" 時找不到對應內容(實際綁定邏輯混亂)。

修正:每個 TabSpec 綁定唯一內容 View

// 佈局需定義 5 個不同 ID 的容器:contain_tab0 ~ contain_tab4
spec = tabHost.newTabSpec("Refresh").setIndicator("Refresh").setContent(R.id.contain_tab0);
spec = tabHost.newTabSpec("Love").setIndicator("Love").setContent(R.id.contain_tab1);
spec = tabHost.newTabSpec("Comment").setIndicator("Comment").setContent(R.id.contain_tab2);
spec = tabHost.newTabSpec("Onward").setIndicator("Onward").setContent(R.id.contain_tab3); // 新 ID
spec = tabHost.newTabSpec("Goback").setIndicator("Goback").setContent(R.id.contain_tab4); // 新 ID

現代替代

TabHost 已**廢棄**,新項目請使用 **ViewPager + FragmentPagerAdapter** 或 **TabLayout + ViewPager2**,架構清晰、動畫流暢、支持嵌套滑動。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved