with studio example activity android tabs

example - tabs android studio 2018



TabHost setCurrentTab solo llama al método createcreate para Activity in Tab una vez (4)

Es una cuestión de eficiencia ... es por eso que su método onCreate no se llama dos o más veces. La forma más fácil de acceder a su actividad desde su TabActivity través del OnTabChangedListener es esta:

public class YourTabActivity extends TabActivity{ public void onCreate(Bundle InSavedInstanceState) { super.onCreate(InSavedInstanceState); final TabHost tabHost = getTabHost(); // blablabla tabHost.setOnTabChangedListener(new OnTabChangeListener() { public void onTabChanged(String tabId) { if( tabId.equals("the_id_of_your_tab") ){ NameOfThatActivity.self.theMethodYouWantToCall(); } } }); } }

Luego, en la actividad de su hijo, tiene algo como:

public class NameOfThatActivity extends Activity{ public static NameOfThatActivity self; // blah blah blah public onCreate(Bundle b){ super.onCreate(b); self = this; } public void theMethodYouWantToCall(){ // do what ever you want here } }

No es belleza, pero funciona bien.

Estoy siguiendo el ejemplo aquí:

http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

Todo funciona bien La primera vez que hago clic en cada pestaña, se oncreate método oncreate para la actividad vinculada a esa pestaña en particular. Sin embargo, las selecciones posteriores de las pestañas no llaman a este método oncreate.

Necesito poder ejecutar oncreate (u otro método) en la actividad que está vinculada a cada pestaña, cuando se selecciona esa pestaña. Sé que puedo usar setOnTabChangedListener , pero no estoy seguro de cómo acceder a la Actividad que está vinculada a la pestaña, para que pueda llamar al método oncreate (u otro).


Mire el método onStart en la clase Activity , creo que quiere anular eso en lugar de onCreate (o además, normalmente llama a setContentView solo en onCreate)


otro método al que puede llamar si usa TabActivity.getCurrentActivity ()


Como señaló @Cristian, es una cuestión de eficiencia. pero en su lugar siempre puede usar el método onResume () en su actividad secundaria.

@Override protected void onResume() { super.onResume(); // do work }