Come chiamare l'attività per la stessa scheda che è attualmente attiva
-
25-10-2019 - |
Domanda
Ho bisogno di implementare le schede nei miei project.i hanno un layout, in cui ho due schede e un pulsante. Per due schede, ho due attività e il pulsante di chiamata diversa attività. Il fatto è che sto mostrando risultato del pulsante prima scheda. cioè Tab0 è attiva sul evento Tab0 e su evento click del pulsante. E sono in grado di cambiare gli eventi tabulazione utilizzando tabHost.setOnTabChangedListener
, ma ora quello che più voglio è, dico Supponiamo che io clicca il bottone così ora vista pulsante viene visualizzato, ma ancora una volta, se clicco su Tab0, dovrebbe essere visualizzato l'attività Tab0.
ho usato onClick ma dopo aver usato questa mia TabChangeListner non funziona.
suggeriresti soluzione per il mio problema.
Grazie.
Di seguito è riportato il mio codice che sta lavorando bene:
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);
}
});
}
}
Soluzione
È necessario utilizzare AvtivityGroup a nuove attività aperte nella stessa scheda.
Questa è l'esempio completo.
http://ericharlow.blogspot.com/2010/ 09 / esperienza-multiple-android-activities.html