我的TabHost
里面有5 Activities
。
我的问题是,如果我在每个活动的操作栏上添加菜单选项,它就不会显示在ActionBar
上。
如果我从Menu Option
活动中添加TabHost
,则会显示在ActionBar
上。
但是,我希望在点击Activity
时为每个Menu Option
添加不同的操作。
请帮助我如何实现它?
答案 0 :(得分:0)
最简单的方法是使用TabHost
onTabChangedListener
。
tabhost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
switch (tabId) {
case "tab1":
//do stuff
break;
...etc
}
}
});
这将跟踪单击哪个选项卡,您可以在那里手动交换操作。
修改要进一步扩展此功能:您可以在此处更改操作(或onClickListener
如果您使用的是自定义操作栏)。对于所有外观,每次选项卡点击都没有任何变化,只有MenuOptions
将执行的操作。一些可能需要优化的混乱代码;你必须自己做这件事:
tabhost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
switch (tabId) {
case "tab1":
activity = "tab1";
break;
case "tab2":
activity = "tab2";
break;
//etc
}
}
});
然后在父TabHost活动中降低,您可以按此按钮响应菜单按钮:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
//this handles actions for your custom button
case R.id.menu_options:
//we further customize it here by listening to the value of "activity" and performing actions based on that
switch (activity) {
case "tab1":
//place your actual menu action here
break;
case "tab2":
break;
//etc
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Edit2 :在StackOverflow上浏览一些Can I have different menu for each tab of TabHost,这是相似但不完全相同的,因为他们想要不同的菜单,而不是相同的菜单不同的操作。不过,可能值得一看。
答案 1 :(得分:0)
您好link的答案后,我发现我无法在TabHost内的每个活动中创建选项。
我在My TabHost活动的onOptionsItemSelected
方法中使用了以下代码
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.next) {
Activity MyActivity = this.getCurrentActivity();
if (Activity1.class.isInstance(MyActivity) == true) {
((Activity1) MyActivity).next();
}
if (Activity2.class.isInstance(MyActivity) == true) {
((Activity2) MyActivity).next();
}
if (Activity3.class.isInstance(MyActivity) == true) {
((Activity3) MyActivity).next();
}
if (DocumentsActivity.class.isInstance(MyActivity) == true) {
//((DemoGraphicActivity) MyActivity).init();
((DocumentsActivity) MyActivity).next();
}
if (Activity4.class.isInstance(MyActivity) == true) {
((Activity4) MyActivity).next();
}
return true;
}
return super.onOptionsItemSelected(item);
}
它像魅力一样......
...欢呼声