Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo llamar a la pestaña Onclick y OnTabChange para la misma pestaña

En mi proyecto, tengo dos pestañas y un botón. Para dos lengüetas, tengo dos actividades y el botón que llama actividad diferente. La cosa es que estoy mostrando el resultado del botón en la primera pestaña. Es decir, tab0 está activo en tab0Event y en el evento de clic de botón también. Y soy capaz de cambiar los eventos de la pestaña usando tabHost.setOnTabChangedListener, pero ahora lo que más quiero es decir, supongo que haga clic en el botón para que ahora la vista de botón se muestra (tab0 está activo), pero de nuevo si hago clic en tab0, la actividad tab0 debe ser desplegado.

He intentado muchas soluciones para hacer clic en la pestaña, una es

getTabWidget().getChildAt(getTabHost().getCurrentTab()).setOnClickListener (new View.OnClickListener() { @Override public void onClick(View v) { System.out.println(getTabHost().getCurrentTab()); } }); 

Pero cuando utilicé este código con tabChnageListner, cambio de tabulación no funciona y tengo resultados muy inesperados. ¿Podría por favor sugerir la solución para mi problema.

Gracias.

El código que está trabajando para la lengüeta cambió es como: (trabajando muy bien para el cambio de la lengüeta, necesidad de agregar Tab Onclick en él)

 public class TabLayoutUsingTabChangeEventActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost); final TabHost.TabSpec sp1 = tabHost.newTabSpec("TAB1"); TabHost.TabSpec sp2 = tabHost.newTabSpec("TAB2"); //Creating First Tab Intent intent1 = new Intent(this, Tab1Activity.class); sp1.setIndicator("TAB1").setContent(intent1); tabHost.addTab(sp1); //Creating Second Tab Intent intent2 = new Intent(this, Tab2Activity.class); sp2.setIndicator("TAB2").setContent(intent2); tabHost.addTab(sp2); //Tab Changed Event tabHost.setOnTabChangedListener(new OnTabChangeListener(){ @Override public void onTabChanged(String tabId) { Log.i("TabId :", tabId); if(tabId.equals("TAB2")){ Log.i("TAB1", "TAB1 Changed"); Intent intent1 = new Intent().setClass(getApplicationContext(), Tab1Activity.class); sp1.setIndicator("TAB1").setContent(intent1); tabHost.setCurrentTab(0); } } }); Button addNewButton = (Button)findViewById(R.id.add_new_ticket_btn); addNewButton.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { Intent in = new Intent().setClass(getApplicationContext(), AddNewTicketActivity.class); sp1.setContent(in); tabHost.setCurrentTab(0); //startActivity(in); } }); } } 

  • Icono de pestaña que no se muestra
  • 3 Solutions collect form web for “Cómo llamar a la pestaña Onclick y OnTabChange para la misma pestaña”

    Puede implementar este oyente:

      host.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { if (getTabHost().getCurrentTabTag().equals("tab0")) { host.getCurrentTabView().setOnTouchListener( new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { if (getTabHost().getCurrentTabTag().equals("tab0") { getTabHost().setCurrentTabByTag("tab1"); getTabHost().setCurrentTabByTag("tab0"); } return false; } return false; } }); } } }); 

    También cuando agregas etiqueta de conjunto de pestañas para cada pestaña:

     host.addTab(host.newTabSpec("tab0")); host.addTab(host.newTabSpec("tab1")); 

    Puede utilizar Fragmento en el diseño

    No puedes. Las vistas en TabWidget ya tienen onClickListener y es necesario para el flujo de trabajo normal. Si lo eliminas, romperás la lógica de TabWidget.

    Cuando se establece su onClickListener eliminar previamente onClickListener y romper la lógica TabWidget.

    Normalmente, en estos casos, se crea un escucha de clics compuesto (un oyente de clics que controla el evento de clic y llama a otro oyente de clics). Pero no en su caso, porque no hay manera de obtener viejo oyente de clics porque View no tiene getOnClickListener método.

    Este es el código fuente TabWidget. Todos los valores relacionados son privados … por lo que no podemos arreglar anithing de este lado.

    La única manera de lograr tu objetivo es un hack con Reflexiones porque permite leer vars privadas. Por lo tanto, antes de establecer el nuevo oyente onlick de View, debes obtener uno viejo (usando Reflections), luego crear onClickListener compuesto que hará tu código de manejo de eventos y luego llamará onClickListener antiguo. Establezca el marcador de clics compuesto en la vista.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.