Beiträge von Ben

    ich stehe gerade vor dem selben "Problem". Ich könnte einfach die hintergrundfarbe ändern, jedoch hab ich da keine lust drauf.
    Kann nicht einfach der standard selektor genutzt werden den Android bei einem einfach klick nutzt und das item dann als "angeklickt" markieren und mit der selben farbe markiert lassen bis ein anderes item markiert wird?

    Also als erstes solltest du Androids eigenen Asynctask nutzen, da kannst du in der preexecute methode die daten vom mainthread in den eigenen thread geben und in postexecute kannst du daten vom eigenen thread in den mainthread übergeben.


    Wenn das Senden von Informationen zum Thread bzw vom Thread asynchron verlaufen soll, hast du schon den richtigen weg gewählt: Den Handler. Ich würde dir aber empfehlen einen langlebigeren Thread in einen Service auszulagen.


    Nun zu deiner eigentlichen Frage.
    Du kannst doch beim instanziieren deines Threads einen Handler an den Thread übergeben der dann im Thread genutzt werden kann um Nachrichten an den MainThread zu senden. Das sieht ungefähr so hier aus:

    Java
    Handler mainThreadHandler = new Handler();
    CustomThread myThread = new CustomThread(mainThreadHandler);



    Sobald dein Thread instanziiert ist kannst du in diesem Thread einen weiteren Handler instanziieren den du über eine get Methode einfach abfragen kannst (Das setzt voraus das du für deinen eigenen Thread eine Klasse hast die von Thread erbt). Da kannst du vom MainThread aus dann einfach sowas hier aufrufen.


    Java
    Handler customThreadHandler = myThread.getHandler();

    liegt doch alles auf github, könntest dir doch deinen eigenen Listener reinbauen.
    Einfach in der App auf Touchevents reagieren und wenn die X und Y Werte deines Events, den Graph des Charts berühren, reagierst du dementsprechend.

    ohne mir dein problem nun genau angeschaut zu haben, versuchs mal mit einem ListViewAdapter.
    Die Adapter sind dazu da um Listen mit Inhalt zu füllen. Wenn du nun deine Map oder eine ArrayList in den Adapter gibst, stellt der Adapter dir einige Methoden zur Verfügung um deine ListView wie gewünscht zu befüllen.


    Wenn du Unterkategorien möchtest, musst du mit einer ExpandableListView arbeiten.

    Ich hatte gestern mal wieder zeit mich hinzusetzen und kurz zu testen ob die app denn nun funktioniert. Hirarchy Viewer zeigt nun zwar die höhe der elemente an (also hats anscheinend was gebracht), angezeigt wird mein fragment dennoch noch nicht.
    Wenn ich heute etwas zeit finde (wenn das hexen kokeln wegen regen ausfällt), versuch ich mal weiter das Problem zu ergründen


    Edit:
    Also Problem gefunden. Man sollte niemals in dem Fragment selbst eine Höhen oder Breitenangabe tätigen. Da der ViewPager das anzuzeigende Fragment selbst nochmal in der höhe und breite anpasst, wurde auf dem smartphone alles ohne probleme angezeigt. Da ich den Fragmentwechsel beim Tablet selbst durchgeführt habe, wurde die automatische breiten und höhen anpassung nicht von android durchgeführt.

    wie mir scheint wird das eingefügte element mit einer höhe von 0 eingefügt. Aber ich finde niergendwo einen Grund dafür :(


    Edit: Bug gefixt
    Wie ich vorausgesagt habe, der Fehler war ein trivaler sinnloser dummfehler meinerseits.
    In meinem zu ersetzenden Fragment hatte das Container Layout eine Höhe von 0 statt einer Breite von 0. Komischerweise wurde es auf dem Smartphone trotzdem angezeigt (vermutlich passt der ViewPager seine kinder automatisch mit der größe an).
    Deswegen hab ich einen solchen Fehler nicht vermutet.

    Mein Fragment erbt aus der Support Library, in meiner App wo dieses Replace funktioniert ist das Fragment auch aus der Support Library. Aber ich schau mal nach ob ich da vielleicht unterschiede finde, thx :)


    Wie ich vermutet habe, wird das Fragment schon hineingeladen, wie in den angehängten bildern zu sehen.
    Nun muss ich mal sehen ob vielleicht der Inhalt einfach nur invisible ist oder 0 breit. Aber vorweg, ich hatte die Liste und das FrameLayout bereits auf eine feste Breite gesetzt um das auszuschließen und es hat nichts gebracht.


    Mal sehen was ich noch finde.
    LG.

    Sorry für die verwirrung.


    Ja ich meinte den Rückgabewert von commit und das habe ich getestet bevor ich das addToBackStack genutzt habe, daher war -1 zu diesem Zeitpunkt ok. (Es hat sich seit dem nix außer dem addToBackStack() geändert).


    Ich schau heute abend nochmal was der hirarchy viewer mir zu sagen hat. Ich vermute dass das Fragment durch das replace schon eingefügt wird aber das FrameLayout einfach vorhanden bleibt und dieses überlagert. Das sollte im Hirarchy Viewer zu sehen sein.


    Das mit dem Subview werde ich auch nochmal testen.


    Thx :)

    Genau wie deine letzten Beispiele, sieht ja mein Code aus. Deswegen verwirrt es mich so, das es nicht funktioniert.


    Im Prinzip ist das halt eine Navigation, links eine liste, rechts das fragment. Das heißt die linke Seite kann nicht als ListFragment gestaltet werden. Das Schlimme ist ja, fast der selbe Code wie in meinem ersten post, hat in einer anderen App schon funktioniert. Da war der einzige unterschied das es eine expandableListView war und nicht nur wie hier eine ListView.


    Am Ende ist das nur wieder ein total trivialer Fehler, wie immer *gg*

    Guten Abend :)


    ich habe eine Activity in der ich links eine Liste als Navigation habe. Beim Klick auf ein Listenelement möchte ich dass das Fragment gewechselt wird.
    Meine Methode zum Wechseln der Fragmente sieht so aus:


    Das zugehörige Layout sieht so aus:


    Mein Problem ist nun, dass auf biegen und brechen der Fragmentwechsel nicht funktioniert. Ich sehe pausenlos nur das FrameLayout egal wie oft ich auf ein item klicke.
    Die Methode ChangeFragment wird aufgerufen, das habe ich anhand einer Log-Ausgabe bereits sichergestellt. Ich habe sämtliche Tutorials gewelst und überall wird es auf die selbe Weise gemacht wie bei mir. Hat jemand von euch eine Idee woran es liegen kann?


    VG.
    ChampS

    In deiner Activity sollten eigentlich deine UI Elemente definiert werden. Denn du musst dort dein Layout an Android übergeben. Du kannst das gern in eigene Klassen auslagern, trotzdem muss am Ende in der Activity das Root-Element gesetzt werden. Zumindest fällt mir gerade kein Weg ein wie man es anders realisieren könnte.

    Du kannst beliebig neue Activities anlegen! Du musst nich alle Logik in deine MainAcitivty packen.
    Ich empfehle dir erstmal ein Tutorial zur Android-Programmierung durchzulesen!


    Du kannst von Activity A mittels Intent zu Activity B wechseln.