FragmentTabHost: "No tab known" obwohl initialisiert

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • FragmentTabHost: "No tab known" obwohl initialisiert

    Hallo zusammen,

    ich hänge jetzt seit insgesamt wohl mehr als 7 Stunden an einem Problem fest:
    Ich möchte einem FragmentTabHost einen Tab hinzufügen, undzwar via TabSpec, dessen Inhalt durch eine TabContentFactory bestimmt wird.
    Ich bekomme immer folgende Exception: java.lang.IllegalStateException: No tab known for tag CON1, obwohl ich genau diesen Tab gerade erst hinzufügen will.
    Hier der Code:

    Java-Quellcode

    1. import android.os.Bundle;
    2. import android.support.v4.app.FragmentActivity;
    3. import android.support.v4.app.FragmentTabHost;
    4. import android.view.LayoutInflater;
    5. import android.view.Menu;
    6. import android.view.View;
    7. import android.widget.TabHost.TabContentFactory;
    8. import android.widget.TabHost.TabSpec;
    9. import de.FragmentTabs.R;
    10. public class ControllerActivity extends FragmentActivity implements
    11. TabContentFactory {
    12. private FragmentTabHost fragTabHost;
    13. @Override
    14. protected void onCreate(Bundle savedInstanceState) {
    15. super.onCreate(savedInstanceState);
    16. setContentView(R.layout.controller_activity_layout);
    17. fragTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
    18. fragTabHost.setup(this, getSupportFragmentManager(),
    19. R.id.realtabcontent);
    20. TabSpec ts = fragTabHost.newTabSpec("CON1");
    21. ts.setContent(this);
    22. ts.setIndicator("CON 1");
    23. fragTabHost.addTab(ts);
    24. }
    25. @Override
    26. public boolean onCreateOptionsMenu(Menu menu) {
    27. getMenuInflater().inflate(R.menu.controller, menu);
    28. return true;
    29. }
    30. @Override
    31. public View createTabContent(String tag) {
    32. LayoutInflater inflater = LayoutInflater.from(ControllerActivity.this);
    33. View v;
    34. if (tag.startsWith("CON")) {
    35. v = inflater.inflate(R.layout.connection_fragment_layout, null);
    36. return v;
    37. }
    38. return null;
    39. }
    40. }
    Alles anzeigen


    Ich hoffe, ihr könnt mir helfen, mir gehen langsam die Ideen aus.

    Danke im Voraus
    PL1994
  • Hallo erneut,

    ich habe inzwischen eine andere Lösung versucht, leider mit dem gleichen, frustrierenden Ergebnis. Zudem verwende ich inzwischen den FragmentTabHost der V13-Support-Version.

    Hier der neue Code (Auszug):

    Java-Quellcode

    1. @Override
    2. protected void onCreate(Bundle savedInstanceState) {
    3. super.onCreate(savedInstanceState);
    4. this.savedInstanceState = savedInstanceState;
    5. setContentView(R.layout.controller_activity_layout);
    6. eventHandler = new EventHandler(this);
    7. fragTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
    8. fragTabHost.setup(getBaseContext(), getFragmentManager());
    9. getLayoutInflater().inflate(R.layout.connection_fragment_layout, fragTabHost.getTabContentView(), true);
    10. TabSpec ts = fragTabHost.newTabSpec("CON1").setIndicator("Connection 1").setContent(R.id.connection_fragment_layout);
    11. fragTabHost.addTab(ts);
    12. }
    Alles anzeigen


    Ich hoffe, dass jetzt jemand den Fehler sieht ...

    Gruß
    PL1994
  • Hoi,

    hab keine Erfahrung mit dem was du da tust, allerdings hilfts manchmal einfach dumm zu fragen :P

    Macht es einen Unterschied, wenn du anstatt

    Quellcode

    1. fragTabHost.setup(getBaseContext(), getFragmentManager());

    mal

    Quellcode

    1. fragTabHost.setup(this, getSupportFragmentManager());

    machst? Vll zerhauts den einfach nur, weil Supported und normale Elemente gemischt werden oder so?!

    Quellcode

    1. TabSpec ts = fragTabHost.newTabSpec("CON1").setIndicator("Connection 1").setContent(R.id.connection_fragment_layout);

    Also ich würd das mal Schritt für Schritt machen und schaun, ob da überhaupt das zurück kommt, was du willst und der sich nicht irgendwo in der Mitte zerlegt und dein "ts" dann Müll ist, wenn du es einhängen willst.


    Gruß,
    matze
  • Hallo,

    danke für die Antwort, aber ich verwende inzwischen eine ActionBar als Navigation - funktioniert jetzt auch. Diese support.v4 oder v13 Pakete kommen mir ohnehin buggy vor. Ob das, was du vorschlägst, funktioniert, kann ich jetzt leider nicht mehr testen, allerdings glaube ich, dass ich diese Variation auch schon mal erfolglos versucht hatte. Trotzdem danke!

    Betrachten wir das mal als "erledigt", Betonung liegt auch den Anführungszeichen :P