studio poner personalizar icono color cambiar cabecera botones bar agregar android android-tabhost tabactivity

poner - Androide. Cómo cambiar la actividad dentro de una pestaña



personalizar navigation bar android studio (4)

Situación siguiente: Tengo TabActivity con, por ejemplo, tres pestañas, TabA, TabB, TabC.

Hay un botón en la actividad (Act_C_1) de TabC. Entonces, si el usuario hace clic en ese botón, otra actividad (Act_C_2) debería ocurrir en TabC.

Le agradezco de antemano cualquier sugerencia o idea.

Mur

UPD:

Aqui esta mi codigo

TabActividad con tres actividades:

public class TabScreen extends TabActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tab_menu); TabHost tabHost = getTabHost(); // The activity TabHost TabHost.TabSpec spec; // Resusable TabSpec for each tab Intent intent; // Reusable Intent for each tab intent = new Intent().setClass(this, SecondActivity.class); // Initialize a TabSpec for each tab and add it to the TabHost spec = tabHost.newTabSpec("tab_1").setIndicator("Tab1",null).setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass(this, ThirdActivity.class); // Initialize a TabSpec for each tab and add it to the TabHost spec = tabHost.newTabSpec("tab_2").setIndicator("Tab2",null).setContent(intent); tabHost.addTab(spec); intent = new Intent().setClass(this, FourthActivity.class); spec = tabHost.newTabSpec("tab_3").setIndicator("Tab3",null).setContent(intent); tabHost.addTab(spec); } }

Actividad ''Act_C_1'' o FourthActivity.java:

public class FourthActivity extends Activity implements OnClickListener { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fourth); Button BtnWeiter = (Button)findViewById(R.id.BtnWeiter); BtnWeiter.setOnClickListener(this); } @Override public void onClick(View v) { // I also tried to use LocalActivityManager // TabActivity parentTabActivity = (TabActivity) getParent(); // LocalActivityManager manager = parentTabActivity.getLocalActivityManager(); // manager.destroyActivity("tab_3", true); // manager.startActivity("tab_3", new Intent(this, FourthActivity.class)); finish(); startActivity(new Intent(this, FourthActivity.class)); } }


Las Actividades en la pestaña se pueden cambiar de la siguiente manera.

Primero entendamos el flujo:

  1. Tenemos en un host de pestañas, actividad (digamos una lista) desde la cual debemos ir a la siguiente actividad (digamos detalles para el elemento seleccionado) en la misma pestaña. Para esto podemos usar el concepto de reemplazar la actividad. También establecer las marcas para la pestaña seleccionada y otras para saber que los detalles se muestran ahora

  2. Cuando volvemos a presionar, deberíamos obtener la actividad anterior en la misma pestaña. Para esto, en lugar de volver a reemplazar la actividad, podemos actualizar la pestaña mientras usamos la bandera particular para la pestaña que se seleccionó. Además, si el indicador de los detalles de la demostración es verdadero, iremos a la lista en la misma pestaña o iremos a la actividad antes del tabwidget (uso normal de onBackPressed)

El código puede ser el siguiente ..

  1. Para ir de la lista a los detalles ...

(Esto puede estar 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); }

  1. Cuando termine de presionar, anularemos BackPressed en cada una de las Actividades en la pestaña para volver a la lista 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_ACTIVIDAD = 1; indica en qué pestaña estamos. por lo que las actividades correspondientes tendrán un valor de 0,1,2 ... etc

De nuevo, para cargar la lista correcta (Activty) cuando se actualice la actividad de la pestaña, tenemos que incluir esto en el TabWidget onCreate después de la creación de las pestañas.

tabHost.setCurrentTab(Constants.LIST_ACTIVITY);


Manejar el evento onClick para el botón

termine () la actividad Agregue el método startActivity para iniciar otra actividad.

Gracias


Simplemente use el indicador Intent.FLAG_ACTIVITY_CLEAR_TOP para reemplazar una actividad para la pestaña necesaria.

intent = new Intent().setClass(this, YourActivity.class); spec = tabHost.newTabSpec("tab1").setIndicator("Tab1",null) .setContent(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); tabHost.addTab(spec);


Solo agrega esto para todas las pestañas:

yourTabHost.getChildAt(0).setOnClickListener(new OnClickListener() { public void onClick(View v) { getTabHost().setCurrentTab(0); } });