Beiträge von herrm_no

    Hallo
    Also Java macht mich bald Irre.
    Da funktioniert alles mal ganz einfach und man ändert eine Kleinigkeit und schon gehen die Problem von vorne los.
    Ich habe Button usw. auf der Main Activity diese wenn ich Anklicke oder... dann startet eine ExternalOnClickListener Class. und führt funktionen aus. (= funktionen für eine Datenbank = Speichern, Update usw.)
    Das funktioniert auch alles Perfekt.


    Nun wollte ich die Buttons ins Menü verfrachten. Einfach um Platz zu sparen.
    Das sollte doch nicht so schwer sein > dachte ich zumindest.


    Aktuell übertrage ich den "listener" in die ExternalOnClickListerner Class mit dem druck auf den Button btnAddData. (oder auch mit btnUpdataData usw.)
    Wie gesagt das funktioniert auch

    Code
    btnAddData.setOnClickListener(listener);


    Wenn ich ein Menü einfüge funktioniert das ja scheinbar nicht mehr so.
    Dort muss man ja zwei Methoden (anstatt nur


    Code
    btnAddData = (Button) findViewById(R.id.buttonAddData);

    einfügen.


    Hier die 2 Methoden in der MainActivity Class


    Was muss ich in "onOptionItemSelected" (oder anders) für einen Code einfügen damit ich im Grunde das Selbe erreiche wie augenblicklich mit btnForward.setOnClickListener(listener);



    Ich hoffe mein Problem ist irgendwie verständlich rüber gekommen.


    Danke schon mal für die Hilfe.


    Gruß


    Hier mal ein Bild und den Code zum Verständniss.



    Hier der Code der Main Activity


    ExternalOnClickListener

    Hey, das geht gerade noch gar nicht, da ich sie noch nicht habe.
    Die Testdatenbank die ich zum lernen verwende hat pro ID
    2 Textboxen, 1 Spinner, 1Checkbox,1 Seekbar.


    Meine Richtige Datenbank (wenn ich alle Probleme gelöst habe) hat dann
    2 Checkboxen, 2 Spinner (jeweils gleicher Inhalt), 10 Spinner (jeweils gleicher Inhallt) , X Textboxen, 18 Seekbars.
    Ich Stelle damit, mehr oder weniger, verschiedene mögliche Enstellungen auf einem elektronischen Gerät nach.
    Je nach Datenbank ID können das dadurch viele verschiedenen mögliche Einstellungen sein.


    Ich hoffe man kann sich das so in etwa vorstellen

    Hallo, ich bins schon wieder mal.
    Habe noch eine Frage zu der SQLite Datenbank.
    Ich habe einen Spinner mit vielen Zeilen Inhalt.
    Es gibt kein Problem damit die selektierte Zeile im Spinner über die selektierte Zeilen nummer abzuspeichern und abzufrufen.
    Das funktioniert auch perfekt
    Situation:
    Die Datenbankzeile beinhaltet z.B. Den Spinner, Checkbox (gedrückt oder nicht gedrückt) , aktuellen Wert eine Seekbar usw.


    Nun meine Frage.
    Wenn sich irgendwann bei der app herausstellt, das ich noch eine weitere Zeile im Spinner zwischen zwei andere Zeilen einfügen muss, dann sind im Grunde alle gespeicherten Daten (der Used) die zueinandergehören kaputt.
    Eine ID (nicht die ID der Datenbank)welche nur zur SpinnerZeile gehört gibt es ja glaub ich nicht. Ich meine damit einen Wert der unabhängig von der Zeile oder dem Text der Zeile ist


    Gibt es irgendeine Möglichkeit das mit dem Spinner von vorneherein so zu lösen, damit eine zukünftige Änderung keine Auswirkungen auf vorhandene User Datenbanken hat.
    Wie löst ihr so was.


    Gruß :huh:

    So, ich habe deinen Vorschlag beherzigt und es Umbegbaut.
    Ich habe auch noch eine extra Klasse dafür geschrieben. (ExternalOnCLickListener)
    Nun funktioniert alles Perfekt
    Danke, Danke , Danke
    Das hat mich nun wirklich Stunden gekostet.
    Man bekommt halt nichts um sonst :) aber die Hilfe vom Forum und besonders von Dir ist unschlagbar.


    Hier mein Code für alle anderen Anfänger


    Main Activity


    Java ExternalOnClickListener

    Hey


    danke so wollte ich es ja eigentlich mache aber irgendwie hatte ich gestern scheinbar eine Blockade oder es war viel viel zu Spät.
    Ich hab einfach nicht gefunden wie ich den Status der RadioBox oder Checkbox als boolean auslese.
    Heute hat es weniger als eine Minute gedauert.


    Danke für den extra Link mit der Reference.


    hier für alle anderen welche auch gerade eine Blockade haben.

    Ok, danke
    das ist ein Vorschlag den ich Verstehe und auch umsetzen könnte.
    so weit ich es richtig gelesen habe, kann man doch nur ein implements View.OnClickLisetener erstellen (Radio Button)
    Was mache ich wenn ich aber zusätzlich noch eine CheckBox und vielleicht noch eine Listbox (und auch noch eine Seekbar) habe.
    Das ist in dem Programm noch nicht enthalten. Aber ich bin mit dem kleinen Programm dabei zu testen wie ich das in meinem Hauptprogramm umsetzen kann.
    Stoße ich da wieder auf ein zusätzliches Problem.




    Gruß

    Hallo wieder eine Frage.


    ich such nun wirklich schon seit Stunden.
    Ich möchte z.B den Status eines RadioButton, dürfte hoffentlich identisch zur Checkbox sein. in der Datenbank speichern. und auch wieder aus der Datenbank lesen.
    Ich dachte das geht total einfach. Status mit get.. abfragen und speichern, dann wieder Status mit set... setzten.
    Da hab ich bis jetzt aber noch überhaupt keine Lösung gefunden. Wie kann ich den den Status einer Checkbox überhaupt lesen.
    Das grösste Problem ist eigentlich dann das ganze als String in die Datenbank zu übergeben.
    Das selbe Problem werde ich warscheinlich auch noch mit Spinner und Seekbar bekommen.


    Wie löst ihr das.


    Gruß

    Danke für eure Antworten


    Also sdo mit dem forwardData(); war ein Test und den hab ich leider in meiner Frage vergessen wieder zu korrigieren.
    Das ist leider nicht die Lösung.


    a) Wie setzte ich denn am besten den Cursor innerhalb 2 Methoden wieder auf die alte Position. Also von Forward zu Backward und Backward zu Forward.
    Das ist mir nicht so klar. bzw. mir fällt gerade nicht ein wie.




    b) wie frage ich die Datenbank nur ein mal ausserhalb der Methoden ab. Dann hätte ich doch ein Problem wenn ich z.B. zwischen durch mal ein Add, oder Update fahren würde ?

    Hey danke für deine Antwort.
    Das stimmt, den Fehler habe ich gerade selber gefunden.
    Ich habe es nun umgeschrieben.
    Hab das cursor.moveToNext und cursor.moveToPrevious gefunden.
    Jetzt aber immer noch ein Problem
    Das Forward funktioniert jetzt perfekt.
    Das Backward(Previous) allerdings immer noch nicht. (er fängt dann wieder bei -1 an anstatt beim letzten Stand von Forward)
    Der Grund ist warscheinlich dass er gegenüber Forward zu Backward eine neue SQLiteCursor@xxxx nummer zieht. Sieht man auf jeden Fall beim debuggen(weis jetzt nicht ob man das Instance nennt).
    Hab schon einiges probiert, aber finde erst mal keine einfache Lösung dafür.
    Gibt es da eine Möglichkeit, damit für beide Buttons das selbe verwendet wird, oder wie geht man da richtig vor.



    Danke für deine Antwort.
    Das hatte ich vorher schon so , diese Zeile war nur ein Test. Ist nun wieder so wie du geschrieben hast.
    Allerdings geht es immer noch nicht.
    Jetzt ist mir allerdings aufgefallen, das bei Forward auch die Position nur bis 2 zählt und dann nicht mehr Weiter. War mir erst nicht bewuss, da mein Datensatz noch so klein war.
    Das ist jetzt allerdings sehr komisch.
    Den Fehler muss ich erst mal finden.


    Gruß

    Guten Morgen
    habe wieder einmal ein Problem. Dieses mal mit der SQL Datenbank.
    Muss zugeben das ich da sehr wenig Erfahrung damit habe.
    Ich habe mir eine Test Datenbank aufgebaut mit / Add, Delete, Update , Show. Das hab ich mir mehr oder weniger aus Youtube zusammengebastelt.
    Funktioniert aber recht gut und hab ich eigentlich auch hoffentlich verstanden.
    Nun bin ich dabei mir einen Forward und Backward Knopf mit einzubauen. Also immer 1 hoch oder 1 runter zählen und Anzeigen.
    Die Forward Taste funktioniert super (position wird immer hochgezählt) aber wenn ich den Backward Knopf drücke fängt er bei 0 an anstatt bei der letzten Forward Position z.B. 4.
    Ich könnte natürlich die position Variable so definieren dass sie "global" gilt, das will ich aber erst mal nicht.
    Möchte verstehen warum es nicht geht.
    Ich dachte dass beim Hochzählen die Position in der Datenbank hochgezählt wird (cursor.moveToPosition) und nicht nur die Variable.


    Hier mal der Code von DataBaseHelper.java


    und hier der von der MainActivity

    Danke schon mal für eure Unterstützung

    Hallo Jogimuc


    das was ich geschieben habe sollte in keinster Weise eine Kritik an dich sein !!!
    Bin auch erst seit etwa 5 Wochen dabei Java und Android zu lernen
    Ich habe auch überhaupt nichts schief von dir genommen.
    Das sollte eigentlich nur von mir eine Info an die sein, damit du siehst, dass ich nicht alle 5 Minuten nur Probleme gelöst haben möchte, sondern schon erst versuche sie selbst irgendwie zu lösen.


    Bin auch echt froh, dass es so jemanden wich dich gibt der Anfängern unter die Arme greift.
    Besonders deine Geschwindigkeit in den Antowrten ist schon bemerkenswert.
    Gruß
    herrm_no


    :thumbup:

    Wie Immer vielen vielne Dank für deine Antworten / Hilfe


    Ja du hast recht, so ganz hab ich die Objektorientierte Programmierung in Java noch nicht richtig verstanden.
    Ich komme von VisualBasic und da hab ich es eigentlich schon kapiert (Bin aber ja nur HobbyProgrammierer)
    Werd mir das aber jetzt doch noch genauer in Büchern und Internet durchlesen. (Hab aber schon Stunden über Stunden in Büchern und Internet gesucht, gelesen und gelernt - meine damit, daß ich nicht faul war !!).



    Ich hab aber jetzt eine Lösung gefunden
    Die Änderung der Zeile 15 auf 16 hat scheinbar die Lösung gebracht.
    Will mal hoffen, das dies nicht ein weiteres Problem ergiebt.


    Also danke erst mal für all deine super schnellen und guten Antworten.
    Jetzt nun aber hoffentlich die letzte.
    Ich hab es jetzt so gemacht wie du es beschrieben hast, ich habe die Variable nun das Array als static definiert und es funktioiert.
    jetzt aber noch eine Frage.
    Ich will nun nicht ein Array sondern nur einen Integer Wert von der MainClass auf die Amicus Setup Class übertragen.
    Das funktioniert auch erst mal (beim ersten durchlauf wenn ich das Programm debugge). Jedoch wenn ich dann die Seekbar berühre ist die Variable wieder Null.
    (das ist ein neu aufgesetztes Projekt, nur um diese Funktion zu testen)
    Mit der ArrayList verstehe ich es nun ja hoffentlich (wegen new ArrayList), aber warum passiert das bei dem Integer "ColorGreen" auch.
    Das ist doch nur eine normale Variable und nichts mit "new"
    Wie löst man denn das korrekt.
    Bitte im Code jetzt nicht wundern (besonders der Kommentar), ich habe mehrere veschiedene Dinge ausprobiert. z.B. mit getter und setter oder direkt Zuweisung

    Code
    myS.ColorRed = 2122222;
    myS.setColorGreen(1111111);

    Funktioniert scheinbar beides. Das Ergebnis ist aber zum Schluß genau das gleiche.



    Feher entsteht hier in dem Fall durch die Zeile 88 /Class AmicusSetup
    Variable ColorGreen ist da wieder Null
    Gruß



    Ich glaub ich stell die Frage jetzt mal ein bisschen anders, vielleicht kannst du mir dabei helfen.
    Du hast mir ja schon mal bei einem anderen Thema wo es auch um fast das gleiche gegangen ist geholfen.
    Dabei war die neue Class "ArrayListBackSpinTop" /zeile 30 innerhalb der MainActivity Class.
    Diese wird dann aufgerufen durch "seekbar1BackSpinTop.setOnSeekBarChangeListener(new ArrayListBackSpinTop(0));" = letzte Zeile.
    Das funktioniert ja recht gut.
    Ich wollte nun einfach nur erreichen, das ich mit File/New Class genau den Inhalt dieser Class in eine neue File/new Class kopiere/verschiebe und dann in der MainActivity die neue Klasse aufrufe (so wie letzte Zeile). Ich hätte erwartet das dies keinen Unterschied macht. Aber da hab ich wohl falsch gedacht.
    Was mach ich da verkehrt bzw. wie geht man da genau vor.
    Gruß

    Hey, danke für deine Antwort
    das dies der Grund ist hatte ich mir irgendwie schon gedacht.


    Aber welchen Weg soll ich denn dann gehen um eine bestimmte "seekbar" / onSeekBarChangeListener einer Class zu übergeben.
    Wie würdest du denn das machen. Ich will ja eine "Class" schreiben der ich dann verschiedene eigenschaften + verschiedene "seekbars" (changeListeners) übergebe.


    Gruß

    Hallo bräuchte wieder mal eure Hilfe.
    Bin langsam echt am verzweifeln.
    Was ist mein Wunsch.
    Ich habe eine 2 Java Class (= mit file new Java Class) in dieser soll SetOnSeekBarChangeListener aufgerufen werden.


    Da hängt es nun aber
    MainActivity

    Code
    LedAmicus led = new LedAmicus(this);
     led.ALBackSpinTop.add(0, seekbar1BackSpinTop);  //seekbar1BackSpinTop = Seekbar 
     // led.flag = 0;
     led.ALBackSpinTop.get(0).setOnSeekBarChangeListener(new LedAmicus(this));


    Hier nun die LedAmicus Java Class. Wenn ich den Debuger Starte hat led.ALBackSpinTop.get(0)
    noch einen inhalt. Wenn ich allerdings dann Auf die Seekbar klicke kommt die Fehlermeldung das led.ALBackSpinTop.get(0)

    nach dem klick auf die Seekbar > ALBackSpinTop >size = 0; > das gibt natürlich dann einen Fehler.


    Was ist da mein Fehler ?
    Warscheinlich habe ich da einen falschen Ansatz bzw. mir fehlt da noch einiges an Erfahrung.
    Gruß
    herrm_no


    Super, das war zwar nicht das was ich gemeint habe, aber so konnte ich es auch umsetzen.


    :thumbup: :thumbup: :thumbup: :thumbup:



    Meine Frage wäre gewesen,
    ob ich direkt beim Aufruf noch einen integer Wert z.B. intValue übergeben kann und wie ich diesen in der Class aufrufe/verwende.
    Wenn du mir das bitte auch noch zeigen könntest, dann hätte meine "Suche" :whistling: endlich ein Ende.

    Code
    seekbar1SideSpin.setOnSeekBarChangeListener(new klikListe(1), new intValue);