Beiträge von Marco Feltmann

    Moin nach Berlin!


    Viel Spaß in der Community und viel Erfolg mit deinen Apps. :)
    Empfehlen kann ich dir leider keine Lektüre. Ich habe hier das Buch für das 3er SDK von Thomas Künneth stehen.
    Davon kann ich allerdings eher nur abraten.
    Es beleuchtet zwar ein paar der Einstiegsoptionen in das Android SDK, baut aber in vielen Fällen Funktionalität kompliziert nach, die das System von allein in simpel liefert.


    Auch fühle ich mich über die fundamentalen Konzepte des Android SDK nicht ausreichend informiert.
    Aber ein klares 'Such ein Besseres als das Buch' ist ja immerhin ein Anfang. ;)

    du sagst also weiterentwicklung der plattform android ist schwachsinn?


    Nein. Ich sage, Software nicht zu Ende durchdacht auf den Markt zu schmeißen ist Schwachsinn.
    Warum gibt es denn Fragments erst ab Android 3.0? Weil man mit Einführung von Android keinen Bock hatte an Tablets zu denken.


    Man musste ganz ganz schnell vor Apple ein Smartphone auf den Markt bringen, nachdem die Kooperation ja gescheitert ist und sich Google an die Netzbetreiber verkauft hat.


    Software muss mit der Zeit gehen, und Android ist so gut geschrieben das man sowas dazupacken kann ohne das Probleme auftreten.


    Das ist es eben nicht. Ich brauche eine Support Library. Mein damals™ für Android 2.3 konzipiertes Programm funktioniert nicht vernünftig auf Android 3.0.
    Eine Tablet-App mit nur einer Activity... So ein Blödsinn.
    Nur leider darf man jetzt Verbiegungen mit der Support Library und sonstigen Dingen anfangen.


    Wie war das mit iOS und der Einführung des iPads? View Controller gab es seit der Beta zu iOS 1.0 Apps für iOS 5 liefen nach Einführung des iPads nahezu ohne weiterführende Anpassungen korrekt auf dem iPad - und zwar so, wie es sich für ein Tablet gehört.


    Übrigens bin ich nach wie vor der Meinung, dass man mit Java keine gute Software schreiben kann - das aber nur am Rande.


    ich mein, hergott viele dinge in html5 gibts in html2 nicht, alles gefrickel oder xD?


    You didn't get it.
    Wie hoch ist die Verbreitung von HTML2 im aktuellen Web verglichen mit HTML 4? (HTML 5 ist meines Wissens immer noch nicht offiziell released.)
    Vermutlich ist der Prozentsatz nicht einmal mit Double darstellbar.


    Android 2.3 ist nach wie vor Marktführer unter den Android Geräten. Google trifft daran natürlich keine Schuld (außer, dass sie sich mit ihrem OS prostituiert haben), doch zeigt es, dass dein Spruch von der Weiterentwicklung nicht stimmen kann. Evolution bedeutet wie bei iOS oder HTML, dass das Alte nach und nach ausstirbt. Allerdings gibt es 4.0 seit ungefähr 12 Monaten und im Februar ist Gingerbread endlich mal unter 50% gelandet.
    Du nennst es Weiterentwicklung? Ich nenne es Stagnation durch Geldgeilheit der Hardwarehersteller.
    (Der Grund, warum ich immer Lachkrämpfe bekomme, wenn die Android-Riege anfängt zu meckern, weil Apple nach 3 Jahren Geräte abkündigt...)


    konzepte können nie von anfangan perfekt sein!
    software wird mit der zeit erst besser, sie ist es niemals von beginn an!


    Richtig. Doch die Konzepte in Android (und damit meine ich das SDK, das Betriebssystem beeindruckt mich schon sehr!) sind nicht nur unperfekt, sie sind von Anfang an absolut undurchdacht. Das hat sich erst mit 3.0 geändert. Meiner Meinung nach VIEL zu spät.


    Dazu sollte man wissen, dass ich damals™ mit dem SDK 1.2 angefangen habe meine ersten Versuche auf Android zu machen. Als olles Gewohnheitstier bin ich Konzepte halt gewöhnt. Fragments gab es damals™ nicht, heute sind sie notwendig, da Activities wie gesagt kein ordentliches Tablet-UI zu Stande bekommen.
    Nur: daran hätte Google auch damals™ denken können, sollen und müssen. 1983 hatte Apple bereits das Newton MessagePad draußen, 2001 ging Siemens mit dem SIMPad an den Start. Beides zwar viel zu früh, doch die Geschichte lehrt uns, dass irgendwann die Zeit dafür reif ist. In diesem Fall 2010, 27 Jahre nach dem ersten Versuch. 2009 mit Einführung des Google G1 waren Tablets schon abzusehen...

    Die Schreibweise kenne ich so noch aus JavaScript Zeiten.
    Und so ungewöhnlich finde ich sie nicht.
    Vergleiche:


    und


    Der Unterschied ist gering. :)

    Android <3 hatte das noch nicht, ergo: nachgefrickelt.
    (Immerhin reden wir hier nicht von einem ausgestorbenen System, sondern von über 50% Marktanteil :P
    Die Support Library ändert übrigens nichts daran, dass etwas wie Fragments in Androids ursprünglicher Planung nie vorgesehen war.)


    Scheiße, weil sie dir eine zusätzliche Abhängigkeit in deinen Code schmeißen. Zusätzliche Abhängigkeiten sind scheiße.
    Scheiße, weil sie deine ursprünglichen App-Design-Methoden ad acta legen: nix mehr mit eine Activity pro Screen und gut. Altbewährte Konzepte über Board werfen ist scheiße.


    Es mag durchaus sein, dass du damit noch absolut keine Probleme hattest und sie dir mehrfach geholfen haben.
    Wenn man Integrität und Konsistenz gewöhnt ist, dann kann man aber halt den ein oder anderen Groll dagegen hegen. ^^

    Moin!


    "Android 4 Apps entwickeln mit dem Android SDK" von Thomas Künneth


    Hab die Version für Android 3 hier und muss sagen, dass ich Herrn Künneths Buch für Einsteiger nicht so optimal finde.
    Aber egal. ;)




    Boah, diese Benamsung.
    Und erklärt hat er vermutlich auch nix...


    Soweit ich unabhängig von dem Code das Prinzip verstehe ist OnClickListener erstmal nur ein Interface, dass besagt, dass die Methode "onClick (View v)" implementiert werden muss.


    Soweit richtig.


    Meine eigene logische Schlussfolgerung wäre, dass ich also zunächst eine Klasse, sagen wir namens "ListenMe" erstelle, die onClickListener implementiert. Darin kann ich dann durch überschreiben von onClick(View v) bestimmen, was beim Click geschehen soll.


    Das könntest du tun, wäre aber etwas aufwendig. Schließlich müsstest du dann schauen, von welcher Activity das View gerade gehosted wird und entsprechend reagieren.

    Das Ganze würde ich dann per

    Code
    weiter_fertig.setOnClickListener(new ListenMe())


    dem Button-Objekt zuweisen.


    Zum Beispiel, ja.


    Nun ist es aber nicht so, wie ich denke, sondern es steht dieses für mich seltsam erscheinende Code-Konstrukt im Raum.
    Dabei wird über "new OnClickListener()" eine Instanz des Interfaces erzeugt? Das ist doch Quatsch - geht doch meines Wissens nach gar nicht? Auch kenne ich die Schreibweise mit dem dahinterstehenden Block nicht.
    Was will mir also dieses Stückchen Code genau sagen ?


    Doch, genau das geht und nein, das ist kein Quatsch.


    Ein Interface ist in Java so etwas wie eine abstrakte Klasse. Von jeder Klasse lässt sich auch eine Instanz erzeugen.
    Du sagst also im weiteren Sinne: "Java Runtime, erstelle mir ein Objekt, das das Interface OnClickListener bedient und die Methode onClick(View) wie folgt implementiert."


    Du gibst diesem Button in diesem Kontext eine spezifische Instanz zum abstrakten Interface View.OnClickListener mit einer spezifischen Implementierung der Methode onClick(View v) mit.
    Statt also 17 ListenMe Klassen mit ihren jeweiligen Instanzen hast du nur 17 'Inline'-Instanzen in deinem Code.


    Bei einem derart simplen Interface ist es ziemlich oft so, dass die Anpassungen so geschehen. (Es werden selten zwei Button denselben OnClickListener verwenden, also lohnt sich eine Ableitung der Activity von OnClickListener mit einer eigenen Implementierung der Instanzmethode onClick(View) zum Einhängen nicht.)


    Bei komplexeren Dingen kannst du so beispielsweise eine eigene Subklasse mit vordefinierten Informationen erstellen und nur die immer anzupassende Methode an der Stelle implementieren, an der du sie brauchst.


    Hoffe jemand kann Licht in mein Dunkel bringen.


    Ich hoffe, ich konnte helfen. :)

    Weil Fragments Scheiße sind. Immer dieses Nachgefrickel, nur weil man damals™ keinen Bock auf View Controller hatte.
    Naja, dennoch sicherlich besser als irgendwelche Libraries.


    Wie dem auch sei, danke für den Tipp. ^^

    Also ob du adb jetzt im Terminal, einer Konsole, im cmd oder der PowerShell eingibst macht keinen Unterschied.
    Du solltest nur darauf achten, dass adb in deinen Pfadvariablen existiert.


    Welche Virtual Box Konsole meinst du?
    Der Standard Hostkey ist statt der rechten Control die linke CMD Taste.


    Also hier läuft es. Ich kann nicht behaupten, dass es viel flüssiger läuft. Aber es läuft.
    Und ich kann die Tastatur nutzen und muss nicht mit dem On Screen Dings rumhändeln.
    Deshalb werde ich den noch ein wenig benutzen.

    Auf das Nexus 5 (so es denn kommen mag) würde ich nicht warten.
    Das Preis-Leistungs-Verhältnis ist super und auf die Lieferung warten musst du vermutlich eh.
    Im Gegensatz zu HTC, Samsung und Konsorten wird auch das Nexus 4 noch mit Android 4.2, 4.3 und 4.x laufen ohne ein halbes Jahr auf Updates warten zu müssen.
    Da die Dinger direkt von Google sind, profitieren sie natürlich auch von Updates. Schließlich werden diese auf die Google Geräte zugeschnitten.


    Ich würde nicht warten.

    Hast du 'Marke' als Fremdschlüssel in der 'Typ'-Tabelle eingerichtet?
    Falls ja, würde ich lieber den Primärschlüssel der Marke nehmen. Das verhindert solche Problemchen mit Leerzeichen, Groß- und Kleinschreibung etc.pp.


    Stichwort Datenbanknormalisierung.

    Generell ist es eine sehr gute Idee, fertige Konzepte zu nutzen.
    Wenn es also ein List.shuffle() gibt und dieses verspricht, die Daten zufällig umzusortieren, dann ist List.shuffle() zu nutzen.


    Du kannst ja ein paar Trockenübungen machen um die Funktionalität zu analysieren. ;)


    Falls shuffle() nicht das tut, was es verspricht (ist bei Java ja oft so... +hust+) kannst du es immer noch selber bauen.


    Ich persönlich würde beide Ansätze kombinieren:
    Eine geschüttelte Kopie der Liste erzeugen (dann kann die Playlist als Solche ja weiterhin angezeigt werden), das erste Item abspielen und dann den ersten Listenpunkt löschen.
    So kannst du immer stur das erste Listitem abspielen und brauchst dich um Cursorkrams etc. nur in der Playlist-Ansicht selbst sorgen.

    Was mir dennoch ein rätsel bleibt ist, warum das dann bei der Höhe funktioniert...


    Rechne es einfach rückwärts.


    höhe/100*6,25 = 50;
    höhe/100 = 50/6,25;
    höhe/100 = 8;
    höhe = 8 * 100;
    höhe = 800;


    800/100 = 8 // Ganzzahl, keine abgeschnittenen Zahlen.
    8 * 6,25 = 50;


    Bei einer Breite von 400 oder 500 hätte es auch funktioniert, 480 hingegen läuft nicht. ;)
    Eine Höhe von 640, 780 oder 801 hätte auch nicht geklappt, 800 hingegen passt super.