Captura del evento de clic de pestaña en la pestaña de pestañas de Android

Tengo un tabview en mi aplicación android con 3 pestañas. Las pestañas están funcionando bien.

Ahora quiero realizar alguna lógica adicional cuando se hace clic en la pestaña (en la parte superior) de la pestaña actualmente activa.

Aquí hay un ejemplo:

En una de mis pestañas, ofrezco una opción para que el usuario ordene las cosas en orden diferente. Cuando presione la pestaña de la pestaña actualmente activa, quiero restablecer todas estas clasificaciones.

¿Es posible capturar el evento de clic de pestaña en tabview y realizar alguna lógica adicional?

Editar: Editado para mayor claridad.

4 Solutions collect form web for “Captura del evento de clic de pestaña en la pestaña de pestañas de Android”

Si usted ares hasta buscar una solución, podría haber encontrado uno. Echa un vistazo aquí: Android TabWidget detectar haga clic en la pestaña actual

Así es como debería funcionar su código:

 getTabWidget().getChildAt(getTabHost().getCurrentTab()).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //do whatever you need } }); 

Encontré una solución sencilla y limpia para Detectar clics en la pestaña seleccionada

Pasos:

1: Extiende TabActivity en tu clase. 2: En el método onResume () implemente el siguiente método

Para cada lengüeta (i) implemente esto:

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

Dado que siempre tenemos un número fijo de pestañas, implementarlo por separado no es un problema.

  for(int i=0;i<tabHost.getTabWidget().getChildCount();i++) { getTabWidget().getChildAt(i).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (getTabHost().getCurrentTabTag().equals(v.getTag())) { int nextTab = getTabHost().getCurrentTab(); tabHost.setCurrentTab(prevTab); tabHost.setCurrentTab(nextTab); prevTab = nextTab; } else tabHost.setCurrentTabByTag((String) v.getTag()); } }); } 

Necesita una variable global;

  private int prevTab = 1; //any tab except the initial one. 

Este código funciona para mí. Una cosa fea poco es que debe establecer la misma etiqueta para la pestaña y la vista Por ejemplo;

  intent = new Intent().setClass(this, AnaSayfa.class); spec = tabHost.newTabSpec("firstTab").setIndicator(makeTabIndicator(R.drawable.firstTab, "First Tab" , "firstTab")) .setContent(intent); tabHost.addTab(spec); 

Y makeTabIndicator método es así,

  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; } 
  • ¿Cómo implemento el deslizamiento entre pestañas en Android?
  • Cómo mostrar siempre las pestañas de ActionBar debajo de ActionBar en Android
  • Android: Cómo hacer una pestaña de la pestaña como el mercado de Android?
  • Cómo crear pestañas como Twitter o Instagram para trabajar en todas las plataformas Android> 2.2
  • Cambio de vista dentro de TabHost (una actividad, varias vistas)
  • ¿Por qué resalta el eclipse en R.id.tabhost?
  • ¿Es posible establecer el agente de usuario en Chrometab en android
  • Cómo establecer el nombre de las pestañas en minúsculas LIke que quiero en Android
  • El contenido de Tabhost no se muestra cuando actualizo android.support.v4
  • Haga clic en la pestaña de Android
  • Android: ¿Cómo se ocultan las pestañas en la barra de acción?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.