在Android Tabview中捕获tab click事件
我的android应用程序中有一个带有3个选项卡的选项卡视图。这些标签都很好用 现在我想在单击当前活动选项卡的选项卡(顶部)时执行一些附加逻辑 以下是一个例子: 在我的一个选项卡中,我为用户提供了一个按不同顺序排序的选项。当按下当前活动选项卡的选项卡时,我想重置所有这些排序 是否可以在tabview中捕获tab click事件并执行一些附加逻辑在Android Tabview中捕获tab click事件,android,tabs,Android,Tabs,我的android应用程序中有一个带有3个选项卡的选项卡视图。这些标签都很好用 现在我想在单击当前活动选项卡的选项卡(顶部)时执行一些附加逻辑 以下是一个例子: 在我的一个选项卡中,我为用户提供了一个按不同顺序排序的选项。当按下当前活动选项卡的选项卡时,我想重置所有这些排序 是否可以在tabview中捕获tab click事件并执行一些附加逻辑 编辑:为清晰起见进行编辑。这是代码的工作方式: getTabWidget().getChildAt(getTabHost().getCurrentTab
编辑:为清晰起见进行编辑。这是代码的工作方式:
getTabWidget().getChildAt(getTabHost().getCurrentTab()).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//do whatever you need
}
});
如果你一直在寻找解决办法,我可能已经找到了。 请看这里: 这个代码对我有用。有一点难看的是,您必须为tab和view设置相同的标记 比如,
intent = new Intent().setClass(this, AnaSayfa.class);
spec = tabHost.newTabSpec("firstTab").setIndicator(makeTabIndicator(R.drawable.firstTab, "First Tab" , "firstTab"))
.setContent(intent);
tabHost.addTab(spec);
而makeTabIndicator方法是这样的
private View makeTabIndicator(int drawable, String text, String viewTag){
View view = LayoutInflater.from(this).inflate(R.layout.tab_layout, null);
ImageView image = (ImageView) view.findViewById(R.id.imageView1);
image.setImageResource(drawable);
image.setAdjustViewBounds(true);
TextView tv = (TextView) view.findViewById(R.id.textView1);
tv.setText(text);
view.setTag(viewTag);
return view;
}
我找到了一个干净、简单的方法来检测选中标签上的点击 步骤: 1:在你的课堂上开展活动。 2:在onResume()方法中,实现以下方法 对于每个选项卡(i),执行以下操作:
TabHost tabHost = getTabHost();
public void onResume() {
super.onResume();
tabHost.getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
count++;
tabHost.setCurrentTab(0);
//based on your count value..you can do anything...like going back to homepage...
// similar thing exist on iphone (double tab a tab..it takes back to homepage)
}
});
}
因为我们总是有固定数量的选项卡,所以单独实现它并不是问题。
TabHost.ontabchangestener
TabHost.ontabchangestener只有在更改选项卡时才会被触发。但我希望触发事件,即使单击了当前活动选项卡的选项卡标题。可以这样做吗?谢谢,这段代码很有效。但它带来了一个新问题。现在,单击选项卡时不会切换选项卡。我需要调用其他方法来更改选项卡吗?我也在努力解决这个问题。。。到目前为止,我没有一个答案,如果不实现您自己的“切换”代码。如果您成功,请共享:)Vikas显示了一个使选项卡切换的修复程序。在侦听器内部添加:getTabHost().setCurrentTab(getTabHost().getCurrentTab());或者,如果getCurrentTab()出现问题,则在监听器外部使用该选项卡的索引创建一个最终int,然后使用该int。您是指活动的onResume()方法吗?如果你能给出一个完整的例子,这也会很有帮助。
private View makeTabIndicator(int drawable, String text, String viewTag){
View view = LayoutInflater.from(this).inflate(R.layout.tab_layout, null);
ImageView image = (ImageView) view.findViewById(R.id.imageView1);
image.setImageResource(drawable);
image.setAdjustViewBounds(true);
TextView tv = (TextView) view.findViewById(R.id.textView1);
tv.setText(text);
view.setTag(viewTag);
return view;
}
TabHost tabHost = getTabHost();
public void onResume() {
super.onResume();
tabHost.getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
count++;
tabHost.setCurrentTab(0);
//based on your count value..you can do anything...like going back to homepage...
// similar thing exist on iphone (double tab a tab..it takes back to homepage)
}
});
}