Beiträge von Oxy

    Noch ein wenig Beta aber trotzdem mal als öffentliche App verfügbar: https://market.android.com/details?id=com.vwp.oean


    Damit lassen sich Barcodes scannen (oder per Hand eingeben) um anschließend Produktinformationen zu diesen Barcodes aus der OpenEAN DB von http://openean.kaufkauf.net abzufragen. Angezeigt werden neben der Produktkategorie und dem Namen auch Detailinformationen, Herstellungsland sowie bei Lebensmitteln auch Informationen zu Inhaltsstoffen (laktosefei, fruktosefrei, glutenfrei, BIO-Produkt,...).


    In einem nächsten Schritt kann der Benutzer dann auch den Preis Eingeben, zu dem er ein Produkt gefunden hat - der wird zukünftig dann für einen neuen Service im Rahmen der OpenEAN DB genutzt.

    Hm, ich fürchte, das ist auch keine Lösung für mich: ich bekomme die Informationen über Größe/Layout/Farbe der Buttons aus einer eigenen Datei. Diese Informationen muss ich dynamisch in ein Layout bzw. in Buttons umsetzen, die dann genau so aussehen sollen, wie in dieser Datei vorgesehen. D.h. prinzipiell kann jede beliebige Kombination von Farben/Vorder-/Hintergründen vorkommen, die es im 24-Bit-Farbraum gibt. Vordefinierte XML-Files fallen damit also weg.


    Ich finde es ja ziemlich lausig, dass Android da so dermaßen begrenzt ist, da hätte man Swing wohl doch nicht aus politischen Gründen über Bord werfen sollen :-/

    Hi,


    nach dem Google irgend wie nur Style-Guidelines für die Icons ausspuckt: Ich würde gerne ein Symbol in der Status/Taskbar einblenden, so lange meine App (die einen eigenen Service hat) läuft. Wenn der User dann dieses Symbol anklickt, soll die App in den Vordergrund geholt werden.


    Wie geht sowas?

    Hi,


    wenn ich für beispielsweise einne Button eine Hintergrundfarge definiere (egal ob im XML oder dynamisch aus der App heraus), dann geht das komplette Design des buttons verloren, er ist dann einfach nur noch ei nflaches Rechteck. Was ist denn da los - kann ich nicht mal die Buttonfarbe verändern ohne dass es den zugehörigen "Skin" zerlegt? Bzw. wie kann ich das sonst lösen, dass ich einen Button irgend wie andersfarbig gestalte und er deswegen trotzdem noch irgend wie nach einem plastischen Bedienelement aussieht?

    OK; hab's herusgefunden: setBackgroundColor() kann auch RGB-Werte, man muss allerdings mit 0xFF000000 verknüpfen, da die oberen 8 Bit Transparenzinformationen enthalten (es ist also eigentlich ein ARGB)

    Hi,


    in einem View-Objekt kann ich mit setBackgroundColor() eine Resource definieren, welche die Hintergrundfarbe festlegt. We mache ic hdas aber, wenn ich einen RGB-Wert habe, der nirgends in irgend einer Resource existiert?

    Sehr viel mehr passiert in dem Handler nicht. Und beim Singlestepping geht der Dialog zwar auf, aber die Progress-Updates sind dann schon nicht mehr zu sehen, sprich der Dialog ist komplett blockiert. Der Ablauf scheint auch korrekt zu sein, es dauert mehrere Sekunden bis zum Dismiss (was sich im Debugger auch so nachvollziehen lässt).


    Die kompletten Sourcen gibt es übrigens hier: http://libwlocate.git.sourcefo…cb4abae0e0a3adf9c;hb=HEAD

    so ganze ohne Code wird es wohl ein Rätsel bleiben.


    Selbst in komprimierter Fassung ist das nicht wenig Code, also sage nicht, ich hätte dich nicht gewarnt ;)


    Der Ablauf beginnt mit dem Aufruf von updateTiles() (aus einem onClick()- bzw. einem Positions-Event heraus) in der Activity:



    Hi,


    ich habe hier ein lustiges Problem mit einem ProgressDialog, der einfach nicht dargestellt wird. Lediglich im Debugger beim Singlestepping poppt er manchmal auf, aber aktualisiert wird er nie.


    Die ganze Story:


    Ich habe eine von View abgeleitete Klasse "DrawCanvas", in der in die onDraw()-Methode überschreibe, um darin ein paar Grafiken darzustellen. Mein erster Ansatz war so, dass ich aus der Activity heraus aus einem onClick()-Handler (Button-click des Users) eine Methode innerhalb dieser Klasse DrawCanvas aufgerufen habem welche mir die Grafiken aus dem Netz lädt um sie dann zu zeichnen. Zum Beginn dieser Download-Methode wird eine Message an einen Handler innerhalb der Activity gesendet, welche das Erzeugen und Öffnen des Progressdialoges veranlasst, während des Downloads wird der Downloadfortschritt ebenfalls per Message-Objekt an den Handler im ProgressDialog aktualisiert.


    Nachdem weder der ProgressDialog noch dessen Statusaktualisierungen sichtbar geworden sind, jabe ich mir gedacht, dass sich die GUI irgend wie selbst blockiert, da alles aus dem onClick()-Event heraus aufgerufen wird. Also habe ich den Code so abgeändert, dass onClick() einen neuen Thread erzeugt und die Download-Methode meines DrawCanvas nur aus der run()-Methode dieses Threads heraus aufgerufen wird. onClick() kehrt also unverzüglich zurück während die eigentliche Arbeit anschließend aus diesem separaten Thread heraus erledigt wird. Allerdings bringt das keinerlei Verbesserung.


    Bereits überprüft und als Fehlerursache ausgeschlossen:
    - die Messages zum Öffnen/Aktualisieren werden ordnungsgemäß abgeschickt, empfangen und verarbeitet
    - der Thread läuft tatsächlich, er wird also korrekt mit start() gestartet
    - alle GUI-Aktivitäten werden aus dem Handler heraus im Kontext des GUI-Threads ausgeführt, hier gibt es also keine doofe Exception


    Woran kann das jetzt noch liegen, dass mein ProgressDialog nicht zu sehen ist?

    Hi,


    es gibt auf "normalen" Betriebssystemen immer die Möglichkeit, eine Applikation irgend wie automatisch zu starten und dabei ein paar Kommandozeilenparameter mitzugeben. Beispiel: irgend ein Player, der automatisch beim Systemstart ausgeführt werden soll und der eine bestimmte Datei wiedergeben soll. In diesem Fall würde es irgend einen Aufruf "player datei.dat" geben, bei dem "datei.dat" die wiederzugebende Datei ist.


    Und nun das Ganze unter Android: Ich habe wiederum einen Player und der Benutzer hat irgend eine Art Datei, die er z.B. am PC erstellt und dann auf sein Android-Gerät transferiert hat. Jetzt soll dieser Player mit der Datei gestartet werden. Was ist hier der gängigste und üblichste Weg? Wie kann man unter Android eine App am besten und elegantesten beibringen, dass sie eine bestimmte Projektdatei verwenden soll?

    Naja, das hier sagt ja, was los ist:


    Zitat

    ClassCastException: android.widget.TextView cannot be cast to android.widget.Spinner


    Du hast irgend wo ein Objekt vom Type TextView und willst das nach Spinner casten - das kann nur schief gehen.


    Leider ist dein Code so lausig formatiert, dass da nix zu erkennen ist - aber wenn du die Exception hast und anklickst, führt sie dich ja eigentlich exakt zu der Stelle, an der das Problem auftritt.

    Hi,


    ich habe ein Layout, in dem das erste UI-Element ein EditText ist. Das führt dazu, dass immer beim Start der App das On-Screen-Keyboard geöffnet ist, was ich so aber nicht möchte (es soll erst aufgehen, wenn der User explizit in das EditText-Feld hineintippt).


    Ein requestFocus() auf einen Button im Layout oder ein setSelected(false) auf das EditText-Element helfen aber nicht. Google spuckt noch ein paar Tipps aus, einfach ein leeres LinearLayout zu verwenden, allerdings bringe ich das nicht vernünftig unter, ohne mir das gesamte Layout zu demolieren.


    Was gibt es sonst noch für Alternativen - wie kann ich das sofortige Öffnen des Keyboards verhindern?

    ...oder von Anfang an ein FrameLayout als Basis verwenden, in dem dann die neuen Layouts der "Fenster" überinander gestapelt werden können, so dass immer nur das zuletzt hinzugefügte Layout sichtbar ist.

    Was genau möchtest du denn weiterlaufen lassen?


    Einen Thread, der Daten sammelt - und das auch weiterhin tun soll, wenn der Benutzer die App in den Hintergrund schickt (der weiß übrigens von der Datensammelei und hat die App genau deswegen installiert). Die Lösung dazu ist - wie ich inzwischen herausfinden konnte - wirklich ein Service.

    Hi,


    da ich nur ein Tablet mit dementsprechend großem Display habe, muss ich die (doofe) Frage hier einfach mal reinstellen:


    Ich habe ein Table-Layout das je nach Menge vorhandener Daten nach unten wächst. Was psssiert aber jetzt auf kleinen Displays, wenn der gesamte Platz nicht mehr ausreicht und Teile des LAyouts quasi nach unten rausfallen - kann der User dann automatisch scrollen oder muss ich schon vorher alles in eine ScrollView packen, damit das geht?