我有一个使用ActionBarSherlock来显示带有导航标签的操作栏的活动。我需要其中一个标签来点击它时打开另一个活动(接管整个屏幕)。我构建了一个自定义TabListener来实现这一点,但是当最初呈现标签内容时它会触发,而不仅仅是在手动选择它时。
我看不到捕获传统onClick事件的方法,所以我假设我需要在TabListener中处理这个问题并以某种方式区分初始选择和后来的手动选择,但是如何?我可以在每次选择选项卡时使用计数器,并且只有在计数器高于零时才启动辅助活动,但这看起来像一个丑陋的黑客。我希望有一种方法来处理“点击”而不是“选择”,因为后者既包括视图的初始显示,也包括后来的手动点击。
我将监听器附加到操作栏导航选项卡,如下所示:
tab.setTabListener(new TabDiseaseSelectorListener(this));
然后听众看起来像这样:
public class TabDiseaseSelectorListener implements ActionBar.TabListener {
private final Activity mActivity;
public TabDiseaseSelectorListener(Activity activity) {
mActivity = activity;
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction unused) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setClass(mActivity, DiseaseSelector.class);
startActivity(intent);
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction unused) {
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
}
}
我尝试使用onTabReselected(),但只有在选项卡已被选中且用户再次点击它时才会触发。