我创建了标签应用..现在我正在玩屏幕旋转。我试着设置tabHost.getTabWidget().setCurrentTab(1)
,它应该显示第二个标签(第一个是0)。关键是第二个选项卡显示为已选中,但显示的内容来自第一个选项卡...我该如何解决?
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
myCommunicator = new Communicator();
dbAdapter = new ToDoDBAdapter(this);
if (getLastNonConfigurationInstance() != null)
{
CurrentTab = (Integer)getLastNonConfigurationInstance();
createView();
}
else
{
BuildDialog = ProgressDialog.show(this, "Loading", "Updating data...", true, false);
BuildDialog.show();
new LoadChannels().execute();
}
}
private void createView()
{
tabHost = (TabHost)findViewById(android.R.id.tabhost);
tabHost.setOnTabChangedListener(this);
Intent intent;
TabSpec spec;
intent = new Intent().setClass(this, Channels.class);
// TAB 1
spec = tabHost.newTabSpec("kanali").setIndicator("Kanali",getResources().getDrawable(R.drawable.menu_channels)).setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Currently.class);
// TAB 2
spec = tabHost.newTabSpec("trenutno").setIndicator("Trenutno",getResources().getDrawable(R.drawable.menu_current)).setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Reminders.class);
// TAB 3
spec = tabHost.newTabSpec("opomniki").setIndicator("Opomniki",getResources().getDrawable(R.drawable.menu_reminder)).setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, About.class);
// TAB 4
spec = tabHost.newTabSpec("oprogramu").setIndicator("O programu",getResources().getDrawable(R.drawable.menu_about)).setContent(intent);
tabHost.addTab(spec);
tabHost.setBackgroundColor(Color.WHITE);
tabHost.setCurrentTab(1); // Should always set content to second
}
@覆盖 public Object onRetainNonConfigurationInstance() { 返回CurrentTab; }
@Override
public void onTabChanged(String tabId) {
CurrentTab = tabHost.getCurrentTab();
}
public void onDestroy() {
super.onDestroy();
// Close the database
try {
dbAdapter.close();
} catch (Exception e) {
// TODO: handle exception
}
}
@Override
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
setContentView(R.layout.main);
createView();
}
答案 0 :(得分:15)
你为什么打电话给getTabWidget()
?您应该使用setCurrentTab()
本身的tabHost
。
在这里工作正常。
tabHost.setCurrentTab(1);
答案 1 :(得分:1)
使用 setCurrentTabByTag(字符串标记); 根据您提到的标记将是默认标签,希望它有帮助,有效(它当前正在为this代码工作!!)
private static final String A ="Kanali"; //required defualt tab name
.
.
.
tabHost.setCurrentTabByTag (A);
答案 2 :(得分:0)
在尝试设置currentTab之前,您是否在调试器中检查了TabHost以确保所有选项卡都已成功添加?我遇到了类似的问题,如果您尝试引用超出未成功添加的选项卡范围的索引,则会发现TabHost.setCurrentTab仍设置为-1。 Android文档中未记录此行为。
答案 3 :(得分:0)
使用tabs.getTabAt(position).select();