Pregunta

Necesito implementar pestañas en mi proyecto. Tengo un diseño, en el que tengo dos pestañas y un botón. Para dos pestañas, tengo dos actividades y botones llamando a diferentes actividades. La cosa es que estoy mostrando el resultado del botón en la primera pestaña. IE TAB0 está activo en el evento Tab0 y en el evento de clic en el botón. Y puedo cambiar los eventos de pestaña usando tabHost.setOnTabChangedListener, pero ahora lo que más quiero es, digamos, supongo que hago clic en el botón, así que ahora se muestra la vista del botón, pero nuevamente si hago clic en Tab0, se debe mostrar actividad de TAB0.

Usé OnClick, pero después de usar esto, mi TabChangeListner no funciona.

¿Sugerirías una solución para mi problema?

Gracias.

A continuación se muestra mi código que funciona bien:

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);
                 }
            });               
      }
}
¿Fue útil?

Solución

Debe usar AvtivityGroup para abrir nuevas actividades en la misma pestaña.

Aquí está el ejemplo completo.

http://ericharlow.blogspot.com/2010/09/experience-multiple-android-activities.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top