Frage

Ich muss Registerkarten in meinem Projekt implementieren. Ich habe ein Layout, in dem ich zwei Registerkarten und eine Schaltfläche habe. Für zwei Registerkarten habe ich zwei Aktivitäten und Schaltflächen, die unterschiedliche Aktivitäten aufrufen. Das Ding ist, dass ich das Ergebnis der Schaltfläche auf der ersten Registerkarte anschreibe. IE tab0 ist auf tab0 -Ereignis und auf der Schaltfläche "Schaltfläche Klicken" aktiv. Und kann die TAB -Ereignisse mithilfe der TAB -Ereignisse ändern tabHost.setOnTabChangedListener, Aber jetzt möchte ich nun, sagen Sie, ich klicke auf die Schaltfläche. Jetzt wird die Schaltfläche angezeigt, aber wenn ich auf tab0 klicke, sollte die Registerkartenaktivität angezeigt werden.

Ich habe Onclick verwendet, aber nachdem ich dies verwendet habe, funktioniert mein Tabchangelistner nicht.

Würden Sie eine Lösung für mein Problem vorschlagen?

Vielen Dank.

Unten ist mein Code, der gut funktioniert:

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);
                 }
            });               
      }
}
War es hilfreich?

Lösung

Sie müssen die Avtivitygroup verwenden, um neue Aktivitäten auf derselben Registerkarte zu öffnen.

Hier ist das vollständige Beispiel.

http://ericharlow.blogspot.com/2010/09/experience-ultiple-android-aktivities.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top