我正在为我的应用添加新的标签布局。我的应用程序有4个活动。
之前,导航是通过活动中显示的按钮完成的,例如活动1中的按钮会转到第4部分。每个按钮都开始一个带有新意图的新活动。要返回用户可以点击他的原生设备后退按钮。
按钮示例:
Button b1= (Button) findViewById(R.id.b1);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(this, ActivityTab4.class);
startActivity(i);
}
});
现在,使用tabhost,用户直接进行欲望活动,每个活动都是我的tabhost的孩子。但是,我仍然需要在我的布局中保留一些直接跳转到特定活动的按钮。
使用这些按钮的问题是,当他们开始新活动时,tabhost消失。我需要随时保留它。
那么我怎样才能正常使用tabhost,但是在它的顶部还使用了我的部分布局中的自定义按钮,当我按下它们时会保留tabhost?
我的tabhost结构非常基础:
public class TabWidget extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.global_tabs);
setTabs() ;
}
private void setTabs() {
addTab("Act1", R.drawable.tab1, ActivityTab1.class);
addTab("Act2", R.drawable.tab2, ActivityTab2.class);
addTab("Act3", R.drawable.tab1, ActivityTab3.class);
addTab("Act4", R.drawable.tab2, ActivityTab4.class);
}
private void addTab(String labelId, int drawableId, Class<?> c) {
TabHost tabHost = getTabHost();
Intent intent = new Intent(this, c);
TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);
// SET TITLETAB
View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);
TextView title = (TextView) tabIndicator.findViewById(R.id.titleTab);
title.setText(labelId);
// SET IMAGETAB
ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
icon.setImageResource(drawableId);
spec.setIndicator(tabIndicator);
spec.setContent(intent);
tabHost.addTab(spec);
}}
感谢您的帮助
编辑:我宁愿避免碎片,因为它需要花费我很多时间来实现它们,并且最重要的是使它与API兼容&lt; 11答案 0 :(得分:1)
好的,我已经找到了,感谢这个答案:setCurrentTab of a tabHost
在主要的tabhost活动中,添加此
private static Main theInstance;
public static Main getInstance() {
return Main.theInstance;
}
public Main () {
Main.theInstance = this;
}
在孩子中,您可以使用按钮将用户发送到任何标签+相应的活动:
Button b1_3= (Button) findViewById(R.id.b1_3);
b1_3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TabWidget.getInstance().getTabHost().setCurrentTab(3);
}
});
答案 1 :(得分:0)
您使用tabhost和活动而不是Fragments的原因是什么?我想你会发现Fragments更适合你想要做的事情。
至于你的问题 - 你可以用
切换显示的标签 void setCurrentTab(int index)
void setCurrentTabByTag(String tag)
因此无需在按下按钮时手动启动活动,只需使用这些方法切换显示的选项卡。