Anfängerfragen zu diversen Themen

  • Hallo Android-Community,


    wie so viele vor mir hatte ich vor einigen Wochen eine fixe Idee eine eigene App zu programmieren und diese kostenlos den betroffenen Leuten den ich helfen wollte zur Verfügung zu stellen. Aus der Idee wurde schnell der Kauf von zwei Androidbüchern ("Android-Apps entwickeln" von Uwe Post und "Android 4" von Thomas Künneth). Schon nach kurzem durchblättern der Bücher habe ich Schei**e gerufen da ich nichts verstehe und jetzt stehe ich vor diversen Problemen meine Idee in die App umzusezten.


    Ich habe null Java Kenntnisse und kann "nur" mit etwas VBA aus MS-Access glänzen allerdings bringt mir das wohl nichts.


    Eclipse, JDK usw. habe ich installiert jedoch an den verdammten Codes beiße ich mir die Zäne aus.


    Ich würde mich freuen, wenn ich hier meine Anfängerfragen platzieren dürfte und mir jemand im Kindergarten-Style diese beantwortet.


    Hier zu meiner App-Idee:


    Der Benutzer soll die Möglichkeit erhalten diverse Daten wie Datum, Zeit, eigenen Text und über diverse Radio-Buttons "JA/NEIN"-Werte eingeben, diese sollen in einer SQLite-DB gespeichert werden die dann über ein anderes Formular in einer Listview aufgelistet werden.


    Ich stoße schon bei meinen ersten Versuchen auf diverse Probleme wie:


    1. Ich habe ein Textfeld namens "Date" was, wo und wie muss ich machen um nach dem klicken ein DatePicker aufzurufen mit dem aktuellen Tagesdatum und nach Bestätigung soll dieser Wert in das Textfeld übernommen werden? Das gleiche für das Uhrzeitfeld!


    2. Da ich viele Radiobuttons habe und die auf dem einen Bildschirm keine Platz habe suche ich nach einer Möglichkeit diese so zu platzieren das man nach unten srollen muss. Was muss ich machen damit ich einen Scrollbildschirm habe..(sorry, kann die Frage nur schlecht in einen Satz fassen).


    3. gibt es Eclipse (Indigo) auch auf deutsch?


    4. manchmal habe ich das Gefühl das Eclipse spinnt und mir einen Error anzeigt obwohl da keiner ist, mit copy, cut und anschliessendem paste ist der Error verschwunden. Ist das normal? Kann man das umgehen, wenn ja wo muss ich was einstellen?


    5. gibt es irgendwo Literatur über Java/ Android-App-Programmierung die in einen super einfachen Stil geschrieben ist?


    6. Meine App ist nur eine reine Dateneingabe- und Speicher App daher glaube ich nicht das ich das Rad neu erfinden werde daher frage ich ganz offen wo ich evtl. eine kostenlose Demo-DB-App erhalten kann um diese auf meine Idee umzuschreiben?


    Gruß aus Rheine,


    Katsche

  • na, ganz schön viele Fragen auf einmal. ;)


    1. Dialogbearbeitung


    Da gibt's ein ganz gutes Tutorial.


    Im Prinzip geht's darum, dass der TextView einen onClickListener bekommt, der beim Anklicken den Dialog anfordert, Android ruft onCreateDialog auf und in deinem Code sollte ein DatePickerDialog gebaut und zurückgegeben werden.


    Nach der Eingabe kommt das Ergebnis in onDateSet wieder zurück und du kannst es ein dein gewünschtes Ausgabeformat umwandeln und im TextView anzeigen.


    2. ScrollView


    Du musst um deinen Container für die RadioButtons noch einen ScrollView packen - der ScrollView darf aber nur einen Container enthalten (z.B. LinearLayout oder RelativeLayout).


    3. Eclipse auf deutsch


    Das geht auch, aber ich weiß nicht wie - ich mag die englische Version. ;)


    4. Anzeige von Errors


    Das kann passieren - manchmal hilft auch, wenn man einfach mal speichert. Aber das wird dir später seltener passieren, am Anfang hab ich das aber auch immer gehabt. :-[


    5. Bücher


    Guckst du hier. Aber ich hab als wichtigste Quelle die developer.android.com benutzt.


    6. Rad2.0


    Das haben sich die Leute bei Android auch gedacht und in den Entwicklerdokus sind viele Beispiele drin - aber leider nicht so wie man das für ein Rad2.0 gerne hätte.


    Vielmehr ist dort "Welle", "Nabe", "Speichen", "Radkranz", "Lauffläche" und "Lager" wunderbar als Beispiel beschrieben - nun musst du daraus deine Rad-Anwendung selber zusammenbauen: Hamster-Rad, Riesen-Rad, Wind-Rad, Wagen-Rad, Fahr-Rad oder was auch immer...


    Ansonsten gibt es viele Beispiele überall - aber da fällt mir spontan nichts spezielles ein. Mussu googlen.


    Aber nun hab Mut und stürz dich in das Vergnügen, Apps zu programmieren. Deine Idee erscheint mir sehr passend um sich damit in die Weiten und Untiefen von Android zu begeben - einige Klippen gibt's zu umschiffen aber es gibt auch viel Info und wenn nix mehr hilft, dann frag einfach nochmal hier. ^^

  • Hallo Uwe, (wenn ich Dich so nennen darf)!


    ich bin Marc.


    Ich habe noch unzählige Fragen da wirklich alles neu für mich ist jedoch muss ich auch noch viel lesen und hoffe damit erklärt sich einiges.


    An der Anzahl Deiner Beiträge sehe ich das Du Dein Handwerk verstehst.


    Ich habe im Anhang zwei Fotos hochgeladen die kurz meine Hauptidee wiederspiegelt.


    Es geht darum, dass chronisch kranke Darmpatienten (Morbus Crohn & Colitis Ulcerosa) Ihre täglichen Stuhlgänge notieren und diese auf ein anderens Formular aufgelistet werden. Ich gehe mal davon aus, dass dieses kein Hexenwerk und durchaus machbar ist oder?


    Gruß Katsche

  • Hallo Katsche,


    wow - sehr gute Idee! Und das ist auch eine schöne Anfängeraufgabe, die auf jeden Fall lösbar ist.


    Damit das auch richtig gut wird, solltest du auch 'nen kleinen Projektplan machen. ;)


    Versuch erst mal den DatePickerDialog - da bekommst du ein bisschen das Gefühl, wie die Teile miteinander zusammen wirken. Log-Ausgaben helfen dabei.


    Achja - Hinweis für Anfänger:
    wenn die App im Emulator läuft, kommen Log-Ausgaben in Eclipse im LogCat-Fenster an (wenn nicht, eventuell beim Tab Devices den View-Menü-Unterpunkt "reset adb" aufrufen).
    Log-Ausgaben kannst du im Programm erzeugen mit Log.e("MyActivity", "ausgabetext");


    Hinweis zum zweiten Bild:
    Bei der zweiten Seite brauchst du einen ListView mit ListAdapter - und der wird dir wahrscheinlich noch viel Mühe kosten, weil da verscheidene Sachen zusammengestöpselt werden müssen. Dazu gibt's aber auch Infos.


    Viel Erfolg
    Uwe

  • also für den header (eingabe, index etc) empfehle ich einen pagertabstrip oder einen pagertitlestrip


    auf dem linken bild reicht ein linearlayout mit vertikaler orientierung und darin mehrere linearlayout horizontal
    zum scrollen wird eine scrollview benötigt


    auf dem rechten bild ist eine listview mit CURSORADAPTER!!!! notwendig


    da du aus einer datenbank liest wäre das von rießigen vorteil den cursoradapter zu nutzen.
    um in eine datenbank zu speichern empfehle ich einen content provider, dazu findest du etliche beispiele im web.


    ich empfehle dir einfach mal codebeispiele anzuschauen und zu versuchen sie nachzubauen.
    spiel ein wenig an den parametern so lernst du welchen effekt dies und das hat.
    ich kann dir auch wärmstens die tutorials von herrn vogella empfehlen, leider sind die alle in englisch, was eine gewisse englischkentniss voraussetzt.
    http://www.vogella.com/

  • Schönes UI, sehr hilfreiches Tool.
    Und durchaus alles andere als kompliziert umzusetzen. ;)


    Soll das für 'Tablets only' werden?


    Wie dem auch sei, ich schließe mich Uwe an. Ein sehr schönes Einsteigerprojekt. :)

    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!«

  • Hallo zusammen,


    vielen Dank für den Lob...ich tue wirklich mein Bestes um das irgendwie umzusezten jedoch Java/Android im Selbststudium beizubringen ist echt mühsam und frustriert schon nach sehr, sehr kurzer Zeit da alles für mich Neuland ist.


    Ich verzweifele schon bei den kleinsten Dingen wie .... per Buttonklick eine zweite Activity aufzurufen.
    Ich bin dem Android-Tutorial auf YouTube (Android Apps programmieren #3) gefolgt jedoch erhalte ich eine Fehleranzeige (siehe Fotos).


    Warum?
    Da ich dann nicht weiterkomme lösche ich alles ab und fange von vorne an.


    Welche Eclipse-Datei müsste ich eigentlich hier hochladen damit andere sich mein Projekt ansehen können, ist das nur die APK-Datei oder kommt da etwas hinzu?


    Gruß Katsche

  • Hallo Katsche,


    dann solltest du dir mal andere Sprachen ansehen. Dann wirst du Java lieben lernen :) Die Hürde ist bei Java eig. sehr niedrig. Deine verzweifelungen werden aber sicherlich bald der Vergangenheit angehören.


    Also zuerst einmal du kannst einfach dein komplettes Projekt anhängen. Wenn du das nicht möchtest "weil ganz viel geheimes zeugs darin gemacht wird :) " lädst einfach nur die Fehlerhaften Dateien hoch. Die .apk brauchst du nicht hochladen, es sei den du möchtest uns als Betatester arangieren ;)


    In deinem Fall sehe ich aber erstmal zwei Dinge:


    1.) Kommentare in XML werden so geschrieben <!-- Ich bin ein Kommentar danke -->
    2.) Deine R Klasse ist nicht generiert wurden, was sicherlich auf deiner Fehlerhaften .xml zurückzuführen ist. (Sieht man im zweitem Screen, dass nichts im gen Ordner zu sein scheint)


    Klick einfach mal auf den Roten Punkt und teile uns die Meldung mit ;)


    Edit: Warum ist eig. in deinem Paket com.example.cedapp eine R.java ? Was macht die bitte bei dir ? Ach und schau mal auf "android:onclick", müsste android:onClick geschrieben werden.

  • zu erst geb ich dir mal den tipp nicht zu verzweifeln, jeder anfang ist schwer.
    eine neue programmiersprache zu lernen geht nicht von heute auf morgen und android ist da im vergleich zu anderen noch einfach.


    wie wärs wenn du mal mit der maus über dein rotes X fährst?
    dann würde nämlich ein kleines info fenster auftauchen was dir sagt "error: No resource identifier found for attribute 'onclick' in package 'android'"


    was soviel heißt wie, "was willst du an der stelle mit einem onclick?, es gibt dort nur onClick"
    achte bitte auf groß und kleinschreibung beim programmieren.


    aber meiner meinung nach ist an dieser stelle ein onClick sowieso unangebracht.
    layout gehört ins xml, logik gehört in die java klassen.


    hole dir die view einfach in deine activity und ruf dann auf die view deinen onclick listener auf


    die fehler in deiner activity kommen wie mein vorredner schon sagte davon das deine R datei nicht erstellt wird, aufgrund des fehlers in der xml datei.
    sobald der fehler in der xml behoben ist generiert eclipse diese R datei automatisch wieder, dann brauchst du nur in deine activity gehn und strg+shift+o drücken (automatisch alle importe regeln) und schon sollten die fehler weg sein.

  • Und wenn wir eh schon bei Tastenkürzeln sind mit strg+shift+f alles schön formatieren lassen :D


    Bzgl. onClick im Layout: Also ich habe bereits mit einigen Agenturen zusammengearbeitet und irg. nutzt fasst jede die Mögichkeit und profitiert davon :) Ich tu es auch gern. Es hält den Code einfach lesbarer.

  • ja das gehört sich nunmal aber nicht :P


    das ist wie wenn ich sage "ich nutze tabellen um das layout für webseiten zu gestalten, es ist einfacher und lesbarer als divs"
    mag alles sein, aber sowas macht man halt einfach nicht xD

  • Hallo,


    oh je, ich habe jetzt total den Überblick verloren *Schimpfwort* *Schimpfwort*


    Man kann in diesem Forum nur bis 150 kb hochladen, mein Projekt ist 465 kb groß *schade* :-/


    Ich habe da noch drei Fragen an die Community:


    1. besteht die Möglichkeit mehr als 150 kb hochzuladen? Wenn ja wie genau?
    2. Gibt es hier die Möglichkeit Privatnachrichten zu schreiben? Ist es sonst gewollt / gewünscht das ich hier meine private eMail-Adresse zum posten von Dateien tausche?
    3. Ich bin gestern auf Android-Inventor gestoßen, diese Drag & Drop Option sieht nett aus. Komme ich damit auch zu meinem Ziel bzw. wo liegen hier die Vor- und Nachteile dieses Programms?

  • 1.) An der Uploadgrenze im Forum kann nur der Admin etwas ändern. Lad dein Projekt doch einfach bei einem freien Dienst hoch. Evtl. http://www.uploadarea.de/ oder einen der weiteren zich Dienste ;)


    2.) Ja du kannst hier Private Nachrichten senden, einfach im eingeloggten Zustand oben auf Private Nachrichten gehen -> Neue Nachricht erstellen usw.


    3.) Kenn ich nicht einmal.

  • Hallo,


    ich habe die PN erhalten und das mit www.uploadarea.de war neu für mich. Super.


    Hier der Link zu meinem Projekt... http://www.uploadarea.de/uploa…ubmyfckmotcarc4swffh.html


    Ich habe versucht den OnClickLisener einzbauen aber hoffnungslos, ich habe wohl alles durcheinander geworfen.


    Könnte sich das bitte jemand ansehen und mir meinen Horizont etwas erweitern?


    Wenn ich daran denke was ich alles mit der App machen möchte wird mir heiß und kalt da ich noch nichteinmal die Basics verstehe.

  • Also fangen wir mal an. Du möchtest zwei Acivity's haben hast aber nur eine und auch nur eine in der AndroidManifest definiert.
    Ich habe dir dementsprechen eine neue Activity "SecondActivty.java" sowie das dazugehörige Layout "activity_second.xml" angelegt.
    In der AndroidManifest habe ich diese dann definiert.


    Entfernt:


    R.java innerhalb deines Pakets (com.example.cedapp) (Warum hast du die hier erstellt?)
    Die R Klasse gehört in den gen Ordner und wird automatisch erstellt. Im Grunde gilt hier: Lass die Finger davon!



    Änderungen am vorhandenen Quelltext:


    activity_main:


    Hier habe ich wie bereits erwähnt onclick in onClick "Achte auf die Groß/Kleinschreibung" geändert. Ausserdem habe ich den Kommentar anständig gesetzt.


    Main.java:


    Mit dem Quelltext kann das auch nicht funktionieren. Du hast hier zwei fehlende Imports:


    • import android.view.Menu;
    • import android.view.View;


    PHP
    final Button b = (Button) findViewById(R.id.btn_data_input);


    Habe ich entfernt, da du hier keine referenz zum Button benötigst. Bei deiner definition führt dieses übrigens zu einer Nullpointer Exeption. Du musst schon sicherstellen, dass du das View holen kannst. Dies ist in dem Klassenattribut nicht möglich. Du musst für solche Fälle sicherstellen, dass das contentView gesetzt ist und du die Referenzen holen kannst. Also merke hier knallt es!!!!! Der Import import android.widget.Button; ist nun also auch überflüssig und wurde entfernt. Übrigens gibt es die ID in deinem layoout nicht. Dein Button hatte die ID: button1 und nicht btn_data_input.


    Du willst ja nur beim buttonklick auf die "zweite Seite" gelangen, allerdings leitest du dich in deiner Methode nicht auf einer "zweiten Seite" weiter sondern änderst nur den ContentView. Ich habe einfach mal ein neues Intent angelegt und mittels startActivity(intent) wird die zweite Activity gestartet.


    PHP
    b.setOnClickListener(new OnClickListener() {


    Des Weiteren brauchst du keinen onClickListener zu setzen, wenn du bereits in der Layout.xml (activity_main) festgelegt hast welche Methode angesprungen werden soll beim klick auf dem Button: zweiteseite(View view). Ausserdem hast du diesen nicht vollständig implementiert bzw. überhaupt geschlossen. Alles was geöffnet wird, muss auch wieder geschlossen werden!!



    Hier findest du das geänderte Projekt:


    http://www.uploadarea.de/uploa…xg1og1ekcxvwmxkwjicg.html


    Tipps:


    Wenn ein Fehler angezeigt wird lese ihn und versuche diesen zu beheben.



    Nehm dir bitte Zeit und verinnerliche zum Anfang die Trainings von Google:


    http://developer.android.com/training/index.html


    Wichtig ist vor allem relaxed an der Sache zu gehen und ggf. mehrfach lesen / probieren. Es hat derzeit den Anschein, dass du etwas angespannt an der Sache gehst (Hast du evtl. Zeitdruck?).

  • Hallo drumliner,


    so richtig Zeitdruck habe ich nicht. Ich habe mir bis zum 30.06. vorgenommen etwas vorzeigbares auf die Beine zu stellen, dass Jahr habe ich mal weggelassen. :evil: Ich bin auch gefrustet das ich noch nicht den kleinsten Vortschritt gemacht habe.


    Es kommen einfach zu viele Informationen auf mich zu, eine unbekannte Sprache, ein unbekanntes Tool, wenn ich etwas erstelle muss ich daran denken hier und das noch etwas zu aktivieren oder zu erstellen.....viel zu kompliziert denke ich.


    Ich danke erstmal für die Hilfestellung, funktionierte erst bei der zweiten Installation vorher wurden überall Errors angezeigt.


    Ich muss mir das in Ruhe angucken, morgen liege ich wohl flach (kleine Operation steht an).


    Gruß Katsche

  • Mach dir einfach keinen Stress beim erlernen der neuen Sprache. Überleg dir zum Anfang einfach ein paar kleine Programme die du erstellen könntest und überleg dir noch vor dem anlegen des Projektes wie du dieses angehen möchtest (ggf. Skizzen / Ablaufplan etc).


    Um den Lerneffekt zu steigern, solltest du dein gewonnenes Wissen und deine Gedankengänge aufschreiben.


    Bzgl. import des Projekts. Wenn du das Projekt über Eclipse importierst wird die R Klasse nochmals generiert. In der Zeit existiert diese nicht und es kommt zu Fehlern. Im rechten unteren Bereich von Eclipse kannst du den Status überprüfen. Merk dir das für die Zukunft, ab und an kann es schonmal dauern bis die R Klasse neu generiert wurde.


    So dann noch alles Gute für die morgige Operation.

  • Na, der Drumliner hat ja die meisten Fragen schon gut beantwortet. :)


    In einem Punkt muss ich dem Guten jedoch widersprechen.

    Zitat

    Dann wirst du Java lieben lernen :)
    Die Hürde ist bei Java eig. sehr niedrig.


    Das hängt ganz gewaltig von der Vorbildung ab.
    Wer C/C++/Objective-C gewöhnt ist, der bekommt bei Java zusätzlich zu diversen Krisen auch noch das kalte Kotzen. ;)
    (ich für meinen Teil habe nie etwas Anderes gemacht, außer mal ein paar Dinge in PHP.)
    Wer allerdings viel mit Delphi oder C# gearbeitet hat, dem fällt das Umdenken auf Java leicht.


    Mit Visual Basic Kenntnissen aus MS Access hingegen ist jede objektorientierte Programmiersprache erst einmal eine mittelschwere Katastrophe, was die Einstiegshürde angeht. Vor Allem Dinge wie die Variablensichtbarkeit bringen einen jedes Mal zur totalen Verzweiflung.
    (Bei Java habe ich bis heute nicht verstanden, was dieser 'final'-Quatsch soll - was daran liegt, dass ich das Übergeben von nackten Zeigern gewöhnt bin.)


    Hinzu kommt, dass meiner Meinung nach die Integration von UI und Code für Android im Speziellen und Java im Allgemeinen total beschissen gelöst ist.
    Bei Cocoa hast du einen Interface-Designer. Dort werden vollständige Objekte in dein Interface gepackt und du kannst problemlos darauf zugreifen, in dem du dein Interface-Objekt lädst.
    Bei .NET hast du einen Interface Designer. Dort werden vollständige Objekte in dein Interface gepackt und du kannst problemlos darauf zugreifen, in dem du deine Interface-Klasse instanziierst.
    Bei Android hast du eine XML-Datei und musst bei jeder Klasse, die dieses Interface darstellen soll, erst einmal selbst Variablen setzen, zuweisen und umhercasten, bevor du endlich auf dein Interface zugreifen kannst.
    Das führt dann zu Dingen wie dem ViewHolder Pattern, welches es weder bei iOS/Mac OS X noch bei Windows/Windows Phone gibt.


    Vor allem bei deiner Vorbildung würde auch ich dir empfehlen: Zeit lassen, durchbeißen, nach jedem Teilerfolg erst mal fünf Minuten an die frische Luft gehen, dann darüber nachdenken und Notizen machen.


    Die gesamten Programmierfachbücher scheinen meiner Meinung nach davon auszugehen, dass man die zu Grunde liegende Programmiersprache bereits supergut kennt. Damit sie sich dennoch 'Einsteiger' schimpfen können, werden noch einmal die komplett langweiligen, unendlich oft durchexerzierten, in wirklich jeder verdammten Miniprogrammiersprache vorhandenen Dinge wie Schleifen und Abfragen durchgekaspert.


    Nur um die wichtigen Dinge kümmert sich da keiner.
    Was ist der Unterschied zwischen einer normalen und einer statischen Variable? Was sind innere Klassen? Welche Architekturmuster gibt es und wie werden sie umgesetzt?


    Für all diese wichtigen Fragen gibt es nach wie vor eigentlich nur eine einzige Standardreferenz, die glücklicherweise nicht teuer sein muss:
    [openbook] Java ist auch eine Insel

    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 denke eh wir hier anfangen dir tausend sachen von convertview oncreate und iwelchen listenern zu erzählen, solltest du erstmal die grundlagen lernen. So kommst du schneller und vorallem schritt für schritt zum Ziel.


    nummer 1: bitte schau dir erstmal ein java tutorial an. Im Internet gibt es genug!
    Wenn du "Java ist auch nur eine Insel" durcharbeiten würdest, wärst du perfekt vorbereitet für die Android programmierung!


    nummer 2: Wenn du Java ein wenig kannst, könntest du dir nochmal die Android tutorials anschauen, dann wirst du diese in einem total anderen licht sehen. Gerade die beiden Bücher würden dann sicher mehr Sinn für dich ergeben.


    versuchs bitte einfach mal, sonst kommen wir hier auf keinen grünen zweig.
    es bringt dir ja auch nix wenn wir für dich die app programmieren, du sollst ja was dabei lernen

Jetzt mitmachen!

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