El problema de error que ocurre debido a la sustitución de actividades se puede resolver de la siguiente manera.
En primer lugar vamos a entender el flujo:
Tenemos en una serie Tab, la actividad (por ejemplo una lista) de la que tenemos que ir a la siguiente actividad (digamos detalles para el elemento hecho clic) bajo la misma pestaña Para esto podemos usar el concepto de reemplazar la actividad. También estableciendo los indicadores para la pestaña seleccionada y otra para saber que los detalles se muestran ahora
Cuando presionamos hacia atrás deberíamos obtener la actividad anterior bajo la misma pestaña. Para esto, en lugar de volver a reemplazar la actividad, podemos actualizar la pestaña mientras usamos el marcador en particular para la pestaña que se seleccionó. Además, si la bandera para mostrar detalles es verdad vamos a ir al la lista en la misma pestaña o de lo contrario vamos a ir a la actividad antes de la TabWidget (uso normal de onBackPressed)
El código puede ser de la siguiente manera ..
- para pasar de la lista a los detalles ...
(Esto puede ser en el OnClickListener)
private OnClickListener textListener = new OnClickListener() {
@Override
public void onClick(View v) {
Constants.SHOW_DETAILS = true;
Intent intent = new Intent(context, DetailsActivity.class);
replaceContentView("activity3", intent);
}
};
public void replaceContentView(String id, Intent newIntent) {
View view = ((ActivityGroup) context)
.getLocalActivityManager()
.startActivity(id,
newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
((Activity) context).setContentView(view);
}
Cuando espalda pegada se realiza sobreescribimos en BackPressed en cada una de la Actividad de la pestaña para ir a la lista de nuevo desde la pantalla de detalles
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
if (MathHelper.SHOW_DETAILS) {
Log.e("back", "pressed accepted");
Constants.LIST_ACTIVITY = 1;
Constants.SHOW_DETAILS = false;
Intent intent = new Intent(this, Tab_widget.class);
startActivity(intent);
finish();
}
}
La parte más importante aquí es Constantes .LIST_ACTIVITY = 1; indica en qué pestaña nos encontramospor lo que las actividades correspondientes tendrán su valor como 0,1,2 ... etc
De nuevo para cargar la lista correcta (Activty) cuando la actividad de las pestañas se actualiza tenemos que incluir esto en el TabWidget onCreate después de la creación de las pestañas
tabHost.setCurrentTab(Constants.LIST_ACTIVITY);
Se requiere más información, no puede entender su pregunta. –