Comment appeler une activité pour le même onglet qui est actuellement actif
-
25-10-2019 - |
Question
Je dois mettre en œuvre des onglets dans mes project.i ont une mise en page, dans laquelle j'ai deux onglets et un bouton. Pour deux onglets, j'ai deux activités et bouton d'appel différentes activités. la chose est que je montre du résultat bouton sur le premier onglet. i.e. tab0 est actif sur événement tab0 et sur le bouton événement click. Et je suis en mesure de changer les événements de tabulation à l'aide tabHost.setOnTabChangedListener
, mais maintenant ce que je plus besoin est, disons suppose que je clique sur le bouton maintenant vue bouton affiche mais encore une fois si je clique sur tab0, l'activité tab0 doit être affiché.
i utilisé onClick mais après avoir utilisé ce mon TabChangeListner fonctionne pas.
proposeriez-vous solution pour mon problème.
Merci.
Voici mon code qui fonctionne 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);
}
});
}
}
La solution
Vous devez utiliser AvtivityGroup pour ouvrir de nouvelles activités dans le même onglet.
Voici l'exemple complet.
http://ericharlow.blogspot.com/2010/ 09 / expérience multi-android-activities.html