So rufen Sie Aktivitäten für dieselbe Registerkarte auf, die derzeit aktiv ist
-
25-10-2019 - |
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);
}
});
}
}
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