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);
                 }
            });               
      }
}
Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top