Beiträge von UweApps

    Damit musst du rechnen...


    Nun kommt's drauf an, wie du die Farben in deiner App einsetzt: wenn möglich solltest du alle Farben in color-Resouces packen (hast du ja auch schon angefangen).


    Die Farben kannst du schnell anpassen und hast damit dann auch alle Hintergründe und Schriftfarben im Griff. Bei Bedarf kannst du dann sogar noch nachträglich Änderungen vornehmen (Stichwort "Einstellungen" - "Farbschema").


    Interessant wird es bei Grafiken.


    Erste Möglichkeit: du machst png-Grafiken mit "sicheren" Farben (grau, blau, rot und helle Farben sind "stabiler" als grün) und einem durchsichtigen Hintergrund (Alpha-Kanal).


    Zweite Möglichkeit: du kannst Grafiken über unterschiedliche Drawables und Canvas erzeugen und dabei auch die color-Resources nutzen.


    Und denk auch an Leute mit Farbsehschwäche - rot und grün niemals direkt nebeneinander. ;)

    Hätte ich auch nicht erwartet, aber irgendwie optimiert Android da wieder irgendwas rum, so dass man zu solchen Tricks greifen muss.


    Ich hätte mir ein dialog.rebuild(builder.create()) gewünscht - gips aba nich...




    Kannst du bitte noch mal ganz unten auf der Seite "Problem gelöst" anklicken? Dann wird das im Forum auch angezeigt. ;)

    Stimmt - ich hab es mir auf meinem Handy auch mal angeschaut und die Farbe wirkt wesentlich heller.


    Ist mir bei Apps ansonsten aber noch nicht wirklich aufgefallen, nur bei dieser Farbe ist es eigenartig, weil sie auf dem Bildschirm sehr gut aussieht, auf dem Handy allerdings ziemlich bäh...


    Dann solltest du die Farbe unbedingt auf unterschiedlichen Display-Typen (LCD, AMOLED) und Herstellern anschauen und die Farbe anpassen, bis sie auf allen Geräten (außer Emulator) gut aussieht.


    Ich bin zwar kein Farbwissenschaftler, aber anscheinend wirkt hierbei die Beleuchtung des Displays besonders stark durch - ein Bildschirm hat meistens Leuchtstoffröhren, Smartphones haben LEDs und die haben wohl verschiedene Spektren, die sich dann mit den Farben des Bildschirms auch noch vermischen und besonders im Grün-Bereich sehr unterschiedliche Ergebnisse liefern.


    Nun hab ich doch tatsächlich meinen alten Röhrenmonitor noch mal angeschmissen - da ist das Grün noch dunkler und besser - da möchte man Kuh sein und reinbeißen...


    Farbtreue ist aber bei allen Bildschirmarten ein problematisches Thema - frag mal beim Grafiker um die Ecke...


    Du musst dich an die Geräte anpassen, auf denen deine App laufen soll, also dort schauen und optimieren.


    :S

    Puh - das war eine schwere Geburt...


    Und anscheinend hat auch niemand sonst die Idee gehabt (oder warum habt ihr mich hier hängen lassen... *fg*) - jetzt sind viele Leute klüger.


    Danke für dein Problem!!!


    LG
    Uwe

    Ich hab da auch wohl schon halb geschlafen - ich hab geschrieben, warum es nicht geht, aber dann doch versucht dagegen zu verstoßen... *mitkopfgegenwandrenn*


    Du bekommst im onPrepareDialog den dialog und darfst ihn benutzen, aber nicht ersetzen - und das hab ich getan mit dem "dialog =..."


    Ich hab mich noch mal in die API-Doku reingehängt und folgenden Vorschlag: Kannst du mal removeDialog(xxx) vor dem showDialog(xxx) einbauen??


    Das sollte eigentlich den alten Dialog löschen und showDialog muss sich dann einen neuen bauen mit onCreateDialog...


    Leider hab ich das selber noch nie wirklich ausprobiert. ?(

    ja, unbedingt die Zeilen rausnehmen - das versaut dir nämlich alles...


    Durch den Befehl wird dein eigenes R abgedeckt durch die Inhalte, die Andoid selber vorgibt.


    Auf die Android-Sachen musst du immer mit "getIrgendwas ( android.R.layout.nochwas );" zugreifen - niemals importieren...

    ah - entschuldige - da bin ich dann auch etwas durcheinander gekommen, weil ich dachte, du willst die ganze Liste übergeben...


    Wenn du nur einen Player übergibst, dann heißt das natürlich (die Zeile steht im onItemClick vom Adapter, oder?):


    Java
    myIntent.putExtra("Player", PlayerList.get(position));


    und


    Java
    public void readPlayer(){
    	 	
    	Entry player = (Entry) getIntent().getSerializableExtra("Player");
    
    
    	String name = player.getName();
    	Toast.makeText(this, name, Toast.LENGTH_LONG).show();
    }

    Ich weiß nicht ob das bei dir war oder wo anders: List ist nicht serialisable, ArrayList ist es schon.


    Also: " is not applicable for the arguments (String, List<Entry>)" bedeutet, dass du ihm eine List und keine ArrayList gegeben hast - schreib doch bitte überall statt List lieber ArrayList, dann gehts auch.


    Vor allem an dieser Stelle muß vorne ArrayList stehen:

    Java
    ArrayList<Entry> PlayerList = new ArrayList<Entry>();


    Du könntest auch schreiben:

    Java
    myIntent.putExtra("PlayerList", (ArrayList) PlayerList);


    aber das ist m.E. nicht die gute Variante, da du ja sowieso nur die ArrayList verwendest und keine anderen Listentypen in der Variable PlayerList unterbringst.

    Ich vermute, du hast den Fehler schon richtig benannt.


    Du musst die ganze ArrayList übergeben und nicht einen einzelnen Eintrag:


    Java
    myIntent.putExtra("PlayerList", PlayerList);


    Ich hoffe, das hilft. *däumchendrück*

    Das hatten wir schon mal, oder?


    Nimm bitte überall ArrayList<T> statt List<T> - die List ist nicht serializable, ArrayList aber sehr wohl... ;)


    Java
    ArrayList<Entry> PlayerList = getIntent().getSerializableExtra("PlayerList");

    Ich hatte ja schon geschrieben, dass du dir mal das Tutorial genauer anschauen sollst - dort im Adapter ist ein onClick-Listener eingebaut, hier kannst du die Activity für den Player aufrufen und die position als Parameter übergeben - oder auch das Player-Objekt (PlayerList.get(position)), wenn deine Player implements Serializable haben...


    In der Player-Activity kannst du dann aus dem getIntent den Datensatz mit getSerializableExtra wieder rausziehen.


    Du brauchst eigentlich nur den ArrayAdapter ersetzen durch einen eigenen Adapter, der die PlayerList als Datenliste bekommt.


    Und dann noch mit lPlayer.setOnItemClickListener(myAdapter) die Click-Behandlung an den Adapter übertragen.

    Kannst du es mal mit einer kürzeren Variante probieren?
    Du setzt nämlich zu vieles auf null und damit schießt du dir selber ins Knie...


    Zunächst solltest du in onPrepareDialog die erste if-Abfrage entfernen - die ergibt immer true, denn ein Objekt kann niemals equals(null) sein - dann wäre es ja kein Objekt und könnte equals nicht verstehen.


    Du wolltest eigentlich schreiben if (dialog != null) - aber das sollte auf keinen Fall sein, denn dann hast du keinen Dialog mehr, den du bearbeiten könntest.


    jetzt hab ich auch gesehen, warum dein dialog null ist: du hast auf den Buttons den dialog = null gesetzt - nimm das mal raus, bitte.


    Vielleicht hast du auch vergessen, das Ergebnis zu ändern - ich hab noch mal Log-Ausgaben eingebaut...


    Was ist das denn für ein neues Projekt?


    Ist es ein Android-Projekt oder nur ein einfaches Java-Projekt??


    Und hast du mal oben im Quellcode die includes angeschaut? Da solltest du die Einträge, die auf dein altes Projekt zeigen, unbedingt löschen. Eclipse tut da zu viel des Guten...

    Wenn du gerade vorher eine leere ArrayList angelegt hast, dann ist da wahrscheinlich auch nichts drin, oder?
    Du solltest schon eine Liste mit Inhalten nehmen, sonst wird das auch nix... ^^


    Probiere doch vorher auch noch mal PlayerList.size() - das gibt dir die Anzahl der Elemente, ich denke mal, das ist bei dir 0, oder??

    Die Methode heißt doch


    Java
    protected void onPrepareDialog(int id, Dialog dialog)


    Den dialog solltest du mal probieren - nicht this.dialog - einfach nur dialog...


    Wenn du Objekte übergeben bekommst, sind das Referenzen (hui - das schlimme Wort) und darum kannst du mit den Objekt-Inhalten arbeiten!!!


    Zitat aus der Doku:

    Zitat

    Before the dialog is displayed, Android also calls the optional callback method onPrepareDialog(int, Dialog). Define this method if you want to change any properties of the dialog each time it is opened. This method is called every time a dialog is opened, whereas onCreateDialog(int) is only called the very first time a dialog is opened. If you don't define onPrepareDialog(), then the dialog will remain the same as it was the previous time it was opened. This method is also passed the dialog's ID, along with the Dialog object you created in onCreateDialog().

    Du hast im onPrepareDialog zwei Variablen vermischt: this.dialog und den Parameter dialog


    Du brauchst this.dialog gar nicht - den bekommst du ja als Parameter und musst ihn dort auch zurückgeben!!!

    ListView hat den Vorteil, dass er gleich scrollt und auch Klick-Events verarbeiten kann. Und der Trick mit Adapter ist nur beim ersten Mal schwierig, wie vieles andere auch. ^^


    Und wenn du Listen als ListView anzeigst, ist das auf Android sehr schnell, weil der ListView einige Tricks der Hardware ausnutzt.


    Ich hab mir am Anfang die TextViews auch selber in LinearLayouts und ScrollView zusammengestrickt, aber war immer unzufrieden bis ich mich dann mal mit ListView angefreundet hab. ;)

    Kommt drauf an, wo du die Daten anzeigen willst.


    Wenn es in einem ListView ist, dann brauchst du einen Adapter, der aus deiner ArrayList<EntryGame> die einzelnen View-Elemente baut.


    Dazu hab ich ein Tutorial geschrieben, vielleicht hilft dir das weiter


    Ansonsten kannst du auch über eine ArrayList iterieren und dabei alle Datensätze der Reihe nach verarbeiten:


    Java
    Iterator<EntryGame> myIterator = GameList.iterator();
    while (myIterator.hasNext()) {
    	EntryGame game = myIterator.next();
    	// jetzt hast du ein EntryGame - mach was damit...
    	Log.v("GameIteratorTest", "Game: " + game.getHometeam + " - " + game.getGuestteam);
    }


    Das ist aber nur sinnvoll, wenn du die Daten bearbeiten willst.


    Wenn es nur um die Anzeige einer Liste geht, dann lies dir mal das Tutorial durch (und gibt mir Verbesserungsvorschläge).
    ;)