Problem mit Fragments im Viewpager

  • Hallo Android Developers
    ich habe ein Problem mit meiner App.
    In einem Fragment sind mehrere Button dynamisch erzeugt worden, durch das klicken auf einen dieser Button wird
    ein Fragment geöffnet werden in dem sich ein Viewpager befindet.
    In dem Viewpager sind Erneut 2. Fragments mittels Adapter drin.
    Im ersten Fragment kann man was mit einem Spinner einstellen, durch einen Button, gelangt man wieder in das Fragment mit den vielen Buttons, nun soll dr Button auf den geklickt worden ist den Spinner text anzeigen.
    Nun zum eigentlichen Problem, klickt man nun erneut auf einen Button im Fragment mit den vielen Button, wird nur eine leere weiße Seite angezeigt.


    Klasse Playground: Dort befinden sich die vielen Buttons.
    Klasse Tisch: playground erzeugt Buttons von Tisch
    (Tisch extends Button)
    Klasse: Table Setting: Wird aufgerufen wenn man auf Button klickt
    Klasse: TableFragmentOne : ISt Fragment im ViewPager


  • Hi werde aus deiner Beschreibung nicht Richtig Schlau.


    Klasse Playground: ist der Start.
    welche Klasse wird dann aufgerufen ?
    zuletzt ist man wieder in der Playground richtig?
    dann willst du wieder eine Klasse aufrufen die dann weiss bleibt richtig? welche Klasse ist das?


    Wie rufst du die Klassen auf und wie kommst du zurück?

  • Playground definiert die Buttons und die zugehörigen Listener.
    Klick auf Button führt zu TableSetting Klasse(Fragment) die hat ein ViewPager als XML Layout,
    im ViewPager ist OneFragment


    OneFragment hat Button führt wieder zu Playground


    Im Playground klick auf Buttons -> weiße Seite: Und nicht wie erwartet TableSettingKlasse mit OneFragment


    Die Klassen ruf ich jeweils in der Main auf, dies mach ich mit Interfaces

  • also ohne v geht nicht da wirds rot
    warum nicht in dieser Zeile?
    bin erst Anfänger in der Android programmierung, habs halt so gedacht, deshalb in der Zeile
    außerdem hab ich das bei den anderen Fragments auch so gemacht


    Deine Annahme das er erst beim zweiten Aufruf weiß(bzw. leer ist) ist richtig


    wenn ichs in d Main aufrufe wirds beim zweitem Mal auch wieder weiß

  • versuche mal getActivity().findView.... Denke du brauchst den Kontext der activity in dem dein Fragment läuft.


    Mit in dieser Zeile meinte ich ob ich die richtige Zeile aus deinem Quellcode kopiert habe ,dies sollte keine Verwunderung ausdrücken.
    Was du auch versuchen kannst ist . Den folgenden Code von dir, nicht in die onCeateView Methode zu schreiben sondern in die in onActivityCeate Methode habe bei meinen Programmen öfters Probleme in der view Methode gehabt .

    • mPager = (ViewPager) v.findViewById(R.id.pager);
    • MyPageAdapter pageAdapter;
    • List<Fragment> fragments = getFragments(buttonId);
    • pageAdapter = new MyPageAdapter(mListener.getManager(), fragments);
    • mPager.setAdapter(pageAdapter);

    Hoffe das hilft .

  • Hat leider nichts geholfen


    liegts vielleicht am XML text?


    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

  • Schade dann weiß ich leider im moment auch nicht weiter.
    Es sollte eigentlich mir dem Kontext der Aktivity die id gefunden werden.
    Ist den zu Laufzeit auch das layout mit der id auch geladen inflatet? Hast du es versucht die id in der onActivityCeate Methode zu zu suchen?
    Teste mit dem debuger oder logcat ob die Methoden durchlaufen werden.


    Die id im XML ist auch keinem layout Typ zugeordnet . Erstelle mal zum zum Test ein layout oder andere view mit id und teste ob die gefunden wird.


    Viel Erfolg

  • Also, dein erstes problem ist schonmal die komplexität deiner view. Das ist alles total verwirrend und komplex. Das ist schon ein indikator dafür dass du dir ein einfacheres layout deiner app ausdenken solltest.


    Irgendwie hab ich auch rauslesen können dass du die selbe activity in sich nochmal aufrufst? Korrigiere mich wenn ich mich verlesen habe. Aber das ist ebenfalls keine schöne lösung.
    Wenn du eine Activity wieder im vordergrund möchtest solltest du zu dieser zurück gehen oder an der stelle auch mit fragmenten arbeiten.


    Kommen wir zu deinem eigentlichen problem. Dein Fehler liegt vermutlich hier "TableSetting.newInstance(buttonId)"
    Entweder ist deine buttonId falsch, weil die Id der view in makeTable benommen wurde (die heißt dort nämlich auch v), oder, was ich eher denke, TableSetting.newInstance liefert das falsche fragment zurück.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!