Beiträge von Marco Feltmann

    Wenn item.getId läuft gehe ich davon aus, dass nur getMenuInfo leer ist.


    Die Dokumentation sagt dazu:

    Zitat

    Returns
    The extra information linked to the View that added this menu item to the menu. This can be null.


    Also so lange keine Infos drin sind kannst Du keine Infos lesen.
    Wie Du da jetzt Infos hinein bekommst weiß ich allerdings auch nicht.
    Eventuell über die menu_1.xml.

    Das Handling betrifft auch die Bedienung an sich.
    Weder unter Android noch unter iOS, Windows Phone, Symbian oder Blackberry gibt es im 'App-Titel' einen Button zur Navigation.
    Android möchte die ActionBar mit dazugehörigen ActionBar Items benutzen und bietet sogar für ältere Systeme eine Nachrüstung des Ganzen.
    iOS nutzt dafür die Toolbar mit speziellen Toolbar Items.
    Windows Phone hat eine Bottom Bar (vermutlich auch eine Toolbar?) mit speziellen Items.
    Blackberry 10 hat eine Bottom Bar mit speziellen Items.
    Sogar Symbian hat(te) eine Top Bar mit speziellen Items.


    Überall zeichnen sich die Items dadurch aus, dass sie lediglich aus einem Symbol bestehen und ein Tipp darauf etwas tut.


    Ein Button mit Icon und Text 'Neu', welcher ein Untermenü mit zwei Auswahlelementen aufruft, passt in das UI Konzept von Web Apps.
    Allen anderen Systemen läuft dieses Design zuwider, da es das wirklich nirgendwo gibt.


    Was für 'Cross Platform Applications' wie Eclipse, blender oder GIMP gilt, gilt auch für Mobile Apps via PhoneGap/Xamarin: es sieht auf allen System gleich schlimm aus und bedient sich auf allen Systemen gleich fremdartig.


    Noch ein Beispiel: nachdem ich eine neue Position (Voranmeldung/Steuererklärung) angelegt habe, wird sie mir in der Liste gezeigt und ich muss darauf tippen.
    Unter Android wie auch iOS ist es aber so, dass nach dem Anlegen automatisch in die Eingabemaske gesprungen wird.


    Die Löschabfrage nach langem Klick ist auch etwas, das weder in iOS noch in Android so implementiert ist.
    Entweder wird ein Editiermodus gestartet oder ein Kontextmenü eingeblendet, es wird nicht 'automatisch' gelöscht.

    Die App sieht wirklich wirklich gut aussieht.
    Da ich mich mit UI echt schwer tue habt ihr dafür meinen tief empfundenen Respekt.


    Auch zum Thema Elster kann ich nur sagen: Chapeau!
    Ein Bekannter von mir hat einmal versucht eine Steuererklärungsapp für den Mac zu basteln und ist an den ELSTER Vorgaben kläglich gescheitert.


    Allerdings finde ich das Handling ausgesprochen schlecht umgesetzt. Insgesamt sieht es für mich sehr nach einer via PhoneGap zusammengeklöppelten App aus.
    Die Ladezeiten sind auf meinem Sony Xperia Z1 unsagbar lange (gefühlt 1 Sekunde pro Screen) und mitunter kann man sehen, wie die Navigation als simple HTML Links dargestellt werden und erst im Anschluss das CSS drum herum gebaut wird.
    Auch die Darstellung des 'Neu' Buttons und des Kopfbereichs wäre mit einer ActionBar wesentlich eleganter und systemnaher gelöst.


    Alles in Allem eine sehr schöne App, die ich sicherlich gewillt bin zu nutzen, sobald sie nativ läuft. ;)

    Das ist ein spannendes Problem.
    Vermutlich wirst Du mit double[][] nicht weit kommen und, schlimmer noch, ewig brauchen.


    Eine Alternative wäre das Programmieren einer eigenen Collection, einer erweiterten ArrayList beispielsweise.
    In der könntest Du dann wahlweise Arrays oder Doubles packen und eigene Algorithmen zum Erstellen und Durchsuchen nutzen.
    Könnte aber durch die starre Typenbindung Javas eher kompliziert umsetzbar werden.


    Eine datenbankähnliche Struktur könnte sich je nach Anwendungsfall als wesentlich zu starr darstellen. Um dies zu beurteilen bedarf es fürwahr etwas mehr Informationen.


    Das Hauptproblem ist meiner Meinung nach aber nicht die Art und Weise der Datenhaltung (also Array vs. Datenbank) sondern die Tatsache, dass Du das Ganze im Speicher vorhalten möchtest.


    Ein bisschen Mathematik sagt uns Folgendes:
    1 Double = 64 Bit = 8 Byte
    1000 Double = 64.000 Bit = 8.000 Byte ~ 8 kB
    1000 * 1000 Double = 64.000.000 Bit = 8.000.000 Byte = 7.812 kB ~ 7 MB


    Eine CSV-Datei mit diesen 1000x1000 Daten dürfte ungleich größer sein.
    Sagen wir, Dein Float wird mit 16 Nachkommastellen im Text dargestellt. (größte Genauigkeit)
    Sagen wir weiter, dass Du lediglich positive Geokoordinaten hast (maximal 3 Vorkommastellen).
    Das Ganze ist dann noch durch Semikolon und ohne sonstige Zeichen getrennt.
    Also ungefähr 172.1098728302384376;103.9172073168452168;…


    Da bist Du dann schlimmstenfalls bei 21.000.000 Byte = 20507 kB ~ 20MB
    Insgesamt bist Du dann mit dem gelesenen CSV und Deine Datenarray bei fast 28 MB RAM.


    Je öfter Du diese Datenmengen im RAM hin und her wuselst, desto länger dauert es.
    Im Allgemeinen kein Problem, haben die meisten heutigen Endgeräte doch um und bei 1GB an RAM. Bei älteren Geräten mit ihren 256MB und einem Rohverbrauch von 150MB nur für Android sieht das hingegen schon gaaaaanz anders aus. Da kann Dir die Kombination OS + Hintergrundprozesse + Mailprogramm + Facebook + Deine App schon mal ein onMemoryLow() Event auslösen.



    Und drittens: teste das Ganze nicht nur im Emulator. Der ist bei solchen Aktivitäten mindestens um den Faktor 5 langsamer als ein durchschnittlich ausgestattetes Endgerät.
    So etwas musst Du immer auf dem langsamsten Endgerät testen, dass Du in die Finger bekommen kannst!

    Ich habe keine Ahnung was Deine Frage bezweckt.
    Du kannst die Variablen 'Hinz, Kunz, Hempels, Meier' nennen, wenn Du magst.


    Ich bevorzuge 'parent, reusableView, position, id'.
    Die Funktionalität des Ganzen ist ausreichend dokumentiert. :P

    Vielen Dank für Deinen Erfahrungsbericht. :)
    (Du kannst übrigens den Bedankomat aktivieren, dann kann man Dir danken ohne hier rumspammen zu müssen.)


    An den schlechten Downloadzahlen in den Stores bin ich wohl mit Schuld.
    Wenn PhoneGap drauf steht lade ich es nicht. Wenn in den Rezensionen PhoneGap steht lade ich es nicht. Wenn ich PhoneGap feststelle schmeiße ich es wieder runter und schreib in die Rezension etwas über PhoneGap.


    Es sind so Dinge wie die Implementierung der Navigation und die elend langen Ladezeiten auf älteren Geräten, die mich einen weiten Bogen um diese Apps machen lassen.


    Was auch immer Du damit bezweckst.

    Aha. :)


    Okay. Warum legst Du dann nicht den Konstruktor für Basic entsprechend an?


    Entsprechend gehst Du dann halt in Deiner überschriebenen Methode vor:

    Java
    public boolean onCreateActionMode(ActionMode mode, Menu menu)
    {
        Basic specializedBasic = new Basic(Basic.EDIT_MENU_TYPE+Basic.DELETE_MENU_TYPE);
        specializedBasic.getMenuItems(menu);
        return super.onCreateActionMode(mode, menu);
    }


    Zumindest hoffe ich, dass das so geht und das Referenzen auf 'menu' übergeben werden.
    Häng seit Wochen in C fest und komm dementsprechend leicht mit den Konzepten durcheinander. ;)


    ABER:
    Wenn sich Deine Menüs lediglich von Activity zu Activity unterscheiden, dann ist der Ansatz mit mehreren XML Menüs plötzlich gar nicht mehr so blöd.
    Es entfallen ja die dämlichen Switch-Anweisungen. (Ich ging von unterschiedlichen Menüeinträgen je ausgewählter Zeile ein und desselben ListViews aus.)
    Hinzu kommt der Vorteil der einfachen Lokalisierung. Es ist wesentlich einfacher pro Sprache ein paar neue Menu_<details>.xml im passenden Unterordner zu erstellen als das Ganze im Code anzupassen.

    Jedoch hab ich nie die Preisgestaltung überblickt…


    Günstigste Variante sind ungefähr 95€ im Jahr. ($131 p.a.)
    Zumindest wenn man von einer regelmäßigen Nutzung ausgeht.


    Ansonsten kann man mit viel Glück auch unter 10€ im Jahr liegen, wenn die App überhaupt nicht genutzt wird…


    Sie haben durchaus nette Tarifoptionen von Flat bis jedes Teil einzeln.
    Mein aktueller Server inklusive PHP, MySQL und Vollzugriff kostet mich weniger als die günstigste Flat-Variante und viel weniger als das realistische Beispiel der Nutzungsvariante.


    Auch musste man nochmals gucken, wie man dann von der App aus darauf zugreift.


    Der Zugriff erfolgt wahrscheinlich über die Cloud Messaging Services. :)


    Ich als alter Objective-C Fetischist bin dann doch eher geneigt, 80€/Jahr in die Objective-Cloud zu investieren. ;)

    Eine Klasse kann kein Interface sein. Sie kann nur ein Interface implementieren.
    Dass Du keinen Konstruktor hast liegt daran, dass deine Elternklasse keinen Konstruktor braucht.
    Das hindert Dich ja nicht daran einen zu erstellen.


    Du kannst den Basic Krams durch eine eigene Subklasse ersetzen und darin herumfuhrwerken wie Du möchtest.


    Ich habe wirklich absolut keine Ahnung was das werden soll…


    Auch weiß ich nicht, wie Du es schaffen möchtest je nach ausgewähltem Element unterschiedliche Menüeinträge zu präsentieren.

    Hallo nyrt.


    Ich bin ja immer noch der Meinung solche 'Anwendungen' gehören in den Browser und nicht auf das Smartphone, aber sei es drum. ;)


    Google Cloud Messaging hilft Dir leider nicht viel weiter. Du kannst es höchstens als eine Art Server für Push Notifications nutzen, beispielsweise wenn jemand eine Herausforderung zu einem Quizduell erhalten hat.


    Um einen eigenen Server wirst Du nicht umhin kommen.
    Und zu dem Zeitpunkt kannst Du machen was immer Du willst. Die Standardlösung MySQL und PHP, die etwas nerdigere Variante PostgreSQL mit Python, die Bezahllösung MSSQL + ASP.NET oder gleich eine exotische IBM Lösung mit DB2 auf einer Series i.
    Du musst einzig darauf achten, dass die Verbindung nach Möglichkeit verschlüsselt ist, die Passwörter verschlüsselt in der Datenbank liegen (nur MD5 ist nicht mehr zeitgemäß) und die Datenbank selbst auf gar keinen Fall über das Internet erreichbar ist sondern ausschließlich deine vorgeschalteten Scripte. Die natürlich SQL-Injections unmöglich machen.


    Wird also ein gewisser Aufwand.

    Na so ganz erfahren scheinst Du mir im Umgang mit Android doch nicht zu sein. ;)