Übergabe von daten an ein zweites fenster

  • Hallo
    ich bin kompletter neuling im programmieren von Android apps. Habe aber Grundkenntnisse in Java. Ich arbeite mit dem Android Studio Programm.


    nun meine Schilderung.


    Ich habe 2 einfache activitys erstellt
    im ersten activity habe ich einen festen text oben stehen, mehrere radio Buttons zur auswahl und unten 3 Buttons


    Die zweite activity ist soweit noch ganz leer. Habe da nur "ausgewählt" als festen text stehen wie im ersten fenster auch schon


    nun zu meinem Problem
    Die 3 buttons im ersten fenster sind ON, Off und Abbruch
    Ich wollte versuchen, das ich die radio buttons anklicken kann. das diese sich in aktiviert und nicht aktiviert sortieren.
    im 2ten fenster soll dann je nachdem welchen der buttons vorher man ausgewählt hat die ausgewählten ausgegeben werden. Sprich wenn man ON drückt sollen alle, die man vorher aktiviert hat in dieser liste erscheinen. und wenn man OFF drückt die restlichen.
    Zudem muss diese aktivierung gespeichert werden. aber auch noch umgeändert werden können.


    im grunde soll es eine Sammlerliste werden. womit man abhacken kann, was man aus dieser sammlung schon hat und was nicht.




    ich suche schon seit tagen im internet nach einer lösung. ich habe wirklich keine Ahnung wie ich das alles verbinden kann. vielleicht hat jemand hier einen Ansatz für mich für dieses problem.


    Liebe Grüße
    Zelezeba



    p.s.: Ich habe 2 bilder eingefügt wie es momentan aussieht

  • Anstelle der Radiobuttons solltest du vielleicht Checkboxen nutzen oder du packst deine verschiedenen Werte gleich in eine ListView. Radiobuttons sind meist für eine einzelne Auswahl zu gebrauchen, Checkboxen für mehrere.
    Die ListView könntest du dann als "simple_list_item_multiple_choice" festlegen -> das wäre dann ein guter Ersatz (gut, weil ich damit was gemacht habe) für Checkboxen im Allgemeinen; außerdem ist es flexibler in der Handhabung
    Speicherungen für deine Auswahl kannst du in einer Datenbank (SQLite wird hierfür genutzt) vollführen.


    Bevor ich dir jedoch helfen werde und dich mit Ko... Code angreife:


    (1) Du möchtest gerne ein Tier (oder auch mehrere Tiere) auswählen können? Oder doch nur eins?
    (2) ON setzt die Tiere auf 'erledigt' bzw. 'abgehakt'?
    (3) OFF dementsprechend vice versa?

  • zu 1: ja, es sollen auch gleichzeitig mehrere ausgewählt werden können.
    zu 2: auch richtig. die sollen als erledigt makiert werden. aber sollte es verloren/weg gehen soll es auch wieder auf off gesetzt werden können
    zu3 ist einfach das, was dann noch fehlt.


    mit den checkboxen klingt einleuchtend. werde das gleich mal erstetzen

  • Nun, ich hätte mir es so gedacht:


    Der Anfangsbestand wird dir in der MainActivity gezeigt.


    [1] Hund
    [2] Katze
    [3] Maus


    Du kannst dann nach Belieben an-/abwählen - solltest du dann auf ON klicken, dann werden diese als 'erledigt' weggeschoben (grob gesagt: in die zweite Activity - das mit dem Ausgewählte).
    Von der zweiten Activity aus kannst du bereits angehakte Sachen wieder auf OFF setzen, sodass diese zur allgemeinen Übersicht wieder zurückkehren.


    Im Übrigen solltest du eine ListView anstelle der Checkbox nutzen, da diese das u.a. mit inne hat und man die Elemente auch - finde ich - einfacher in die Datenbank bekommt bzw. von dort ausliest.

  • und die sortierung sollte auch beibehalten werden.


    [1]Katze
    [2]Hund
    [3]Hamster


    sprich also wenn ich den hund nun abhacke auf platz 2 soll er dort auch als 2 sein. falls ich die 1 dann abhacke soll sie vor dem hund landen. genauso auch wieder mit dem zurück, also wenn ich sie wieder "verloren" habe sollen sie sich wieder so sortieren

  • und die sortierung sollte auch beibehalten werden.


    [1]Katze
    [2]Hund
    [3]Hamster


    sprich also wenn ich den hund nun abhacke auf platz 2 soll er dort auch als 2 sein. falls ich die 1 dann abhacke soll sie vor dem hund landen. genauso auch wieder mit dem zurück, also wenn ich sie wieder "verloren" habe sollen sie sich wieder so sortieren


    Ich werde mich mal mit meiner Idee ransetzen und dementsprechend rumcoden. Sobald ich zu einem Ergebnis gekommen bin, werde ich es dir mitteilen.
    Die Sortierung ist auch keine Hürde. :)

  • Also um Deine Frage zu beantworten: Du kannst eine Activity starten und ihr einen Intent übergeben. Dieser Intent kann dann die jeweils notwendigen Daten beinhalten und entsprechend auf der nächsten Activity darstellen.


    Allerdings sind Activities schon ziemlich Gingerbread. Damit will ich sagen, dass es seit Honeycomb auf dem Tablet und seit Ice Cream Sandwich auf dem Smartphone das sehr mächtige Werkzeug der Fragmente gibt.


    Es wäre daher sinnvoller, Dein UI so zu gestalten, dass Du einen Pager hast. (Ähnlich dem Play Store mit den 'Neueste', 'Beliebteste', 'Bestseller' etc.pp.)
    Ganz links wäre dann beispielsweise 'Alle', in der Mitte 'On' und rechts 'Off' und mit einem Swipe oder Antippen würde dann dynamisch gefiltert werden.


    Das ist ein ideales Übungsprojekt und Du solltest dafür ungefähr 20 bis 40 Stunden einplanen. :)


    • Du benötigst neben einem ListView auch einen entsprechenden ListView Adapter, der Dein ListView entsprechend füllt.
      Perfekterweise hast Du für jeden dieser Pager ein eigenes ListView mit eigenem Adapter. Macht zunächst etwas mehr Aufwand, da man die geringen Unterschiede einfach mit If-Abfragen erschlagen könnte. Ist aber später einfacher zu erweitern.
      ListViews im Allgemeinen sind mit ihrem ViewHolder Pattern im Speziellen schon ein Bereich, an dem man sich ziemlich lange aufhalten kann.


    • Deine Items müssen für die Nutzung standardisiert werden, Du brauchst also ein eigenes Objekt für die 'Listenitem'.
      Auf jeden Fall sollten die Properties 'name' als String und 'selected' als Bool enthalten sein. Vielleicht willst Du sie auch um Details erweitern oder ein Bild ran hängen können oder sonstwas. Dann ist pro Eintragstyp ein Objekt sinnvoll.


    • Natürlich sollten Deine Items irgendwo gespeichert werden. Shared Preferences sind dafür ungeeignet, also musst Du den Umweg über eine SQLite Datenbank gehen.


    • Es ist eine gute Idee, die Arbeiten in dieser SQLite Datenbank über einen Content Provider zu realisieren, den Du natürlich auch selbst erstellen musst. So kannst Du gewährleisten, dass bei einer Änderung an Deiner Datenbank nur ein Objekt (der Content Provider) angepasst werden muss. Ansonsten suchst Du Dich im Code dumm und dusselig.


    • Wenn Du so richtig angeben willst, schreibst Du zu jedem wichtigen Teil wie Deinen ListItem Objekten und Deinem Content Provider auch noch Unit Tests. Damit kannst Du Probleme bei Änderungen bereits vor dem Ausführen auf dem Gerät erkennen.


    Mit diesen Informationen und http://www.vogella.de als Ressource solltest Du eigentlich in der Lage sein, Dir was Passendes zusammenzustellen. :)
    (Und wenn Du ganz viel Lust zum Spielen hast, aber befürchtest, etwas kaputt zu machen: Nutze ein Source Code Management System wie Git!)

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Bezüglich des Pagers stimme ich dir vollkommen zu, habe daran gar nicht gedacht. Nur weiß ich nicht, wieso er 20 bis 40 Stunden für sein Projekt bräuchte bzw. für deinen Vorschlag. Solange wird man sicherlich nicht brauchen. Selbst ein Anfänger wird dafür nicht so lange brauchen, aber vielleicht hast du dir ja dabei etwas gedacht.


    Wenn du es nicht vorhast für ihn schon einmal fertig zu basteln um ggf. 'besser helfen zu können', so würde ich das übernehmen, weil ich ja bereits angefangen habe. :P

  • Damit bin ich nun komplett in die totale verwirrung gerutscht oO.


    liegt vielleicht ein wenig daran das ich eine Sie bin und kein er =P
    und bei meinem wissensstand, auch als anfänger muss ich mindestens die doppelte zeit einrechnen.
    ich kann mir nämlich nur über alle möglichen hilfen im internet etwas zusammen basteln. und nebenbei auch noch anderes tun. einzelne pcs reparieren hat leider vorrang. deswegen würde ich mich sehr über den ansatz freuen. füllen könnte ich es selber und perfektionieren für das was ich mir direkt vorstelle auch. nur der grundsatz den bekomme ich leider nicht zusammen gebastelt

  • "Der Mensch" ist aber maskulin :)


    Ein Pager stellt Reiter zur Verfügung, um's vereinfacht auszudrücken.
    Und bei den verschiedenen Reitern hast du dann jeweils eine Liste, für jede Liste benötigst du einen Adapter, der für dich die Einfügearbeit übernimmt :)


    Dennoch kommt man nicht auf solche Zeiten :3


    Ich werde mich einfach mal ransetzen, hätte ja sein können, dass Marco das auch macht bzw. vorhatte.

  • Huch, hier ging es ja noch weiter. ^^


    Zelezeba
    Ich weiß, dass mein Ansatz höchst verwirrend ist.
    Deshalb habe ich zunächst Deine Frage zu beantworten versucht und dann mit Tipps und Links um mich geworfen.


    Die Interaktion von Android zwischen den Daten auf dem Telefon und der Anzeige auf dem Display ist allerdings sehr abstrakt und nicht so einfach zu realisieren. Insofern habe ich mir flink ein Design überlegt, das einerseits sinnvoll zu bedienen ist und Dich andererseits an Spezialitäten von Android heranführt.


    Es wird Dir leider nicht allzu viel helfen, Dir über alle möglichen Hilfen im Internet etwas zusammen zu basteln, weil Dir dann Hintergrundwissen fehlt.


    Um beim PC reparieren zu bleiben: wenn Du immer gemäß Anleitung RAM in den PC steckst wunderst Du Dich plötzlich, warum Windows XP nur von 3,5GB spricht obwohl Du doch 8GB reingesteckt hast. Du zweifelst an Dir, schaust was schief gegangen sein könnte und wunderst Dich um so mehr.
    Wenn Du ein bisschen was von der Interaktion zwischen Betriebssystem und RAM verstehst, dann fällt Dir kurz darauf ein, woran das liegt und Du rüstest auf ein weniger verschwenderisches Maß herunter.


    Leviathan
    Nein nein, ich bastle da nichts.
    Sofern es sich nicht um ein auf das Problem zugeschnittenes Videotutorial bzw. Coachingevent handelt, halte ich von vorgefertigten Dingen nicht allzu viel.
    Die 20 bis 40 Stunden waren auf Anfänger gemünzt, die bei jedem Punkt recherchieren müssen und auch mal ein bisschen herumprobieren wollen.
    Ich komme regelmäßig auf solche Zeiten. Das liegt bei mir daran, dass ich das Ganze erst einmal funktional zusammenklöppel (gemessen an dem, was ich mir da vorgenommen habe und unter Berücksichtigung der Dinge, die mich immer wieder Zeit kosten weil ich sie immer wieder falsch mache, sollten das so 4 bis 5 Stunden sein) und anschließend dann überarbeite und überarbeite und überarbeite. Im Vorfeld gehen schon mal 2 bis 3 Stunden für Planung und Storyboards drauf. Naja, und am Ende dann noch mal 3 bis 5 Stunden für Strukturanpassungen und Dokumentation.


    Es geht mir nicht darum, fertig zu werden. Es geht mir darum, meine Sache gut zu machen.
    Vermutlich bin ich zu lange im Geschäft und habe zu wenig Zeit, um eine App schnell fertig zu stellen.
    (Gerade erstelle ich eine Bibliothek komplett neu, die ich vor ungefähr zwei Jahren schnell fertig gestellt habe – das macht kein Spaß!)


    Ein Professor meinte mal, ein 'Hallo Welt' ließe sich in zwei Minuten erstellen – oder mit entsprechender Projektplanung, Qualitätssicherung, Tests, Design, Verpackung, Marketing und Dokumentation auch in zwei Monaten.


    --


    PS: Man sagt aber nicht 'der Mensch', sondern 'die Person' ;)
    Davon abgesehen ist "Mensch" nur grammatisch maskulin, da er als abstrakte Bezeichnung keinem konkreten Geschlecht zuzuordnen ist.
    Der Mensch Zelezeba ist dennoch biologisch feminin. Rausreden nützt da auch nix.


    Ich habe mir angewöhnt, Personen direkt mit 'Du' anzusprechen, beziehungsweise in der dritten Person über den Nicknamen, um die Personalpronomen zu vermeiden.
    Im Gegensatz zum gefühlten Großteil der Entwickler bin ich froh um jede Frau wie Zelezeba, die sich in die Programmierung vorwagt.
    Gerade deshalb gebe ich mir Mühe, in Einsteigern die Lust am Forschen und Probieren zu wecken und sie von der Idee des schnell zu erreichenden Ziels abzubringen.


    Beispielsweise weiß jeder, dass Thomas Alva Edison sich unter Anderem um die Glühlampe verdient gemacht hat.
    Kaum einer weiß, dass er ungefähr 500 Schrottlampen entwickelt hat. Noch weniger wissen, dass er Aufsehen erregende Installationen aus eigener Tasche hat erstellen lassen, um die Werbetrommel für seine Erfindung zu rühren. Schnell kann man das wahrlich nicht nennen. ;)


    Wie dem auch sei, statt eines flapsigen '"Der Mensch" ist aber maskulin' wäre eine Entschuldigung angebracht.
    Ein 'Oops, entschuldige bitte. Das wusste ich nicht, da Du in Deinem Profil kein Geschlecht angegeben hast.' tut niemandem weh. :P

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Ich bin nicht 'man', sondern ich selbst. Wozu also eine Entschuldigung, wenn ich nichts verbrochen habe oder 'falsch' gemacht habe? Ich mag ungerne zur Gesamtheit dazugehören; dies ist jedoch nicht immer zu vermeiden ...
    Flapsig wäre es gewesen, würde ich es ohne dazugehörige Gesichtsäußerung ( :) ) schreiben. Bitte verzeih, sollten meine Äußerungen etwas 'aggressiv' oder 'angegiftet' rüberkommen, gestresst bin ich bereits etwas - jedoch nicht wegen dieser Dinge hier. :o


    --


    Es ging im Übrigen nur darum, dass du jemandem nichts vorfertigst, sondern in Stückchen bzw. Portiönchen anhand der Möglichkeiten erklärst, wie man es machen kann. Daher werde ich mich um jene Arbeit kümmern.


    --


    EDIT: Wenn ich mir gerade nochmal die Arbeit mit dem Pager anschaue, oh weh ...
    Es ist nicht viel selbst zu machen, man kann es sich ja alles automatisch erstellen lassen, das Verständnis dahinter wird u.U. aber die Problematik darstellen; es ist zwar nicht alles wirklich notwendig zu wissen, aber schon eine Sache für sich. :D

  • Erstmal Willkommen im Forum von mir ;)
    Um meinem Senf mal hinzuzugeben:


    • Ich würde im Allgemeinen einfach eine Listview (RecycerView) mit entsprechender Filterfunktion in der Toolbar vorschlagen.


    • Dazu ein FloatingActionButton, um ein neues Element hinzuzufügen (Einen Dialog aufpopen lassen mit Name etc.)


    • On und Off nicht als Buttons oder Checkboxen, sondern als Switch (letztes Element ganz unten)-Element. Davon abgesehen würde ich das ganze über ein Kontextmenü lösen (Langer Druck auf ein oder mehrere Items)


    • Beim Filter für 'Alle' könnte man On und Off durch verschiedene Farben signalisieren. Bei allen anderen einen neutralen Hintergrund. Um den neusten Designvorgaben zu folgen, würde ich auch CardViews vorschlagen.


    • Um die Datenbanksache zu vereinfachen, würde ich Realm vorschlagen.


    Hoffe du hast weiterhin viel Spaß am Entwickeln und Lernen :)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

Jetzt mitmachen!

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