OnClickListener auf Tabs funktioniert nicht
Grüße,
Ich versuche, das Klick - Ereignis beim klicken auf die derzeit ausgewählte Registerkarte meine TabActivity. Die onTabChangedHandler wird nur aufgerufen, wenn das Register geändert wird, nicht wenn die derzeit aktive Registerkarte geklickt wird. Der debugger sagt mir, ich habe die onClickListener Registriert, die für die TabWidget in meinem TabHost.
Bin ich der Registrierung für die falsche Ansicht?
Bin ich auch nicht erstellen Sie ein Kontext Menü für die Tabs, nur für die eigenen Inhalte, ist dieses problem im Zusammenhang?
public class TestDroidViewTab extends TabActivity
implements TabContentFactory
, OnTabChangeListener, OnClickListener {
private static final String LOG_KEY = "TEST";
ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final TabHost tabHost = getTabHost();
TabHost.TabSpec ts = tabHost.newTabSpec("ID_1");
ts.setIndicator("1");
ts.setContent(this);
tabHost.addTab(ts);
ts = tabHost.newTabSpec("ID_2");
ts.setIndicator("2");
ts.setContent(this);
tabHost.addTab(ts);
ts = tabHost.newTabSpec("ID_3");
ts.setIndicator("3");
ts.setContent(this);
tabHost.addTab(ts);
tabHost.setOnClickListener(this);
tabHost.setOnTabChangedListener(this);
}
public void onClick(View v) {
Log.d(LOG_KEY, "OnClick");
}
public void onTabChanged(String tabId) {
Log.d(LOG_KEY, "OnTabChanged");
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, um zu sehen, dass eine bestimmte Registerkarte geklickt wird, müssen Sie Ihre Zuhörer auf den Reiter selbst, nicht das TabHost.
Die Hierarchie der views in einem tab Umsetzung:
Den tabs während der Laufzeit Hinzugefügt werden durch aufrufen von:
tabHost.addTab(tabHost.newTabSpec(""));
Können Sie dann in den Griff bekommen, um die einzelnen Registerkarten durch aufrufen:
getTabWidget().getChildAt(4);
Im wesentlichen, fügen Sie Ihre
OnClickListener
auf ein Kind, das TabWidget. Sie können jetzt Holen die Klicks auf Ihre individuellen tab. Allerdings wird dies das Standardverhalten überschreiben, ändert die Inhalte, wenn eine Registerkarte geklickt wird. So, um Ihre Inhalte zu ändern, IhreOnClickListener
müssen das für Sie tun.Hier ist ein vollständiges Beispiel, können Sie das click-Ereignis abfangen und ändern den Inhalt unter der Registerkarte:
verwenden
setOnTabChangedListener
stattOnClickListener
😉Ihre Klausel ist falsch, Nutzung:
...
...
Versuchen, diese