Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android Tabview中捕获tab click事件_Android_Tabs - Fatal编程技术网

在Android Tabview中捕获tab click事件

在Android Tabview中捕获tab click事件,android,tabs,Android,Tabs,我的android应用程序中有一个带有3个选项卡的选项卡视图。这些标签都很好用 现在我想在单击当前活动选项卡的选项卡(顶部)时执行一些附加逻辑 以下是一个例子: 在我的一个选项卡中,我为用户提供了一个按不同顺序排序的选项。当按下当前活动选项卡的选项卡时,我想重置所有这些排序 是否可以在tabview中捕获tab click事件并执行一些附加逻辑 编辑:为清晰起见进行编辑。这是代码的工作方式: getTabWidget().getChildAt(getTabHost().getCurrentTab

我的android应用程序中有一个带有3个选项卡的选项卡视图。这些标签都很好用

现在我想在单击当前活动选项卡的选项卡(顶部)时执行一些附加逻辑

以下是一个例子:

在我的一个选项卡中,我为用户提供了一个按不同顺序排序的选项。当按下当前活动选项卡的选项卡时,我想重置所有这些排序

是否可以在tabview中捕获tab click事件并执行一些附加逻辑


编辑:为清晰起见进行编辑。

这是代码的工作方式:

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)
     }
   });
 }