Implementé un TabActivity
que implementa el OnTabChangeListener
. La actividad se notificará en los cambios de pestaña (onTabChanged(String tabId)
).Recibir una notificación cuando se selecciona la pestaña actual nuevamente
¿También es posible recibir notificaciones si el usuario selecciona la pestaña actual nuevamente?
Me gustaría utilizar este evento para realizar una "actualización" del contenido de la pestaña actual en lugar de proporcionar un botón de actualización en la pestaña o en el menú de opciones.
Esa es la forma que finalmente resuelto el problema - solución pista estaba en MisterSquonk respuesta.
(1) Defina un OnTabReselectListener que debe ser implementado por una actividad que represente un contenido de pestañas y que será notificado en eventos de reselección.
/**
* Interface definition for a callback to be invoked when a current selected tab
* in a TabHost is selected again.
*/
public interface OnTabReselectListener {
/**
* Called when a current visible tab is selected again. Will not be invoked
* on tab changes.
*/
void onTabReselect();
}
(2) setOnTouchListener para cada niño TabWidget en onCreate() de la TabActivity (de la respuesta de MisterSquonk)
for (int i = 0; i < tabWidget.getChildCount(); i++) {
View v = tabWidget.getChildAt(i);
v.setOnTouchListener(this);
}
(3) Implementar OnTouchListener.onTouch() en la TabActivity. Haga un poco de lógica para decidir si la pestaña actual fue seleccionada nuevamente y notifique la actividad de la pestaña.
/**
* @see android.view.View.OnTouchListener#onTouch(android.view.View,
* android.view.MotionEvent)
*/
@Override
public boolean onTouch(View v, MotionEvent event) {
boolean consumed = false;
// use getTabHost().getCurrentTabView to decide if the current tab is
// touched again
if (event.getAction() == MotionEvent.ACTION_DOWN
&& v.equals(getTabHost().getCurrentTabView())) {
// use getTabHost().getCurrentView() to get a handle to the view
// which is displayed in the tab - and to get this views context
View currentView = getTabHost().getCurrentView();
Context currentViewContext = currentView.getContext();
if (currentViewContext instanceof OnTabReselectListener) {
OnTabReselectListener listener = (OnTabReselectListener) currentViewContext;
listener.onTabReselect();
consumed = true;
}
}
return consumed;
}
¿Qué está utilizando para establecer como indicador de las pestañas? – Squonk
@MisterSquonk Estoy usando una cadena. Ver mi edición – FrVaBe
Ver mi respuesta para un posible ángulo para explorar. – Squonk