Beiträge von matthias

    Der Übergabeparameter SQLiteDatabase db ist eine bereits offene Verbindung zur Datenbank, die von SQLiteOpenHelper kommt. Betrachte es einfach als Geschenk, weil du dich jetzt selbst nicht mehr darum kümmern musst ;)


    Was du jetzt tun musst, ist in dein Methode folgendes einfügen:

    Java
    mDb = db;


    Damit setzt du die Instanz der SQLiteDatabase auf deine Membervariable und du kannst von überall aus in der Klasse zugreifen, so wie du es eh schon gehandhabt hast. Also im Prinzip nur folgendes:


    mDb ist jetzt nicht mehr null, du benutzt den Übergabeparameter, musst nicht selbst noch einmal mit open() eine Verbindung aufbauen weil dir bereits eine übergeben wurde und es müsste jetzt funktionieren.


    Gruß,
    matze

    Uff ^^


    Du nimmst ja deinen Übergabeparameter gar nicht her ...


    Java
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
    	Log.v("DatabaseHelper", "Datenbank Upgrade von " + oldVersion + " auf " + newVersion);
    	open();   
    	if (oldVersion < 2 && newVersion == 2) {
    		Cursor CursorOldTable = fetchId();
    		CursorOldTable.moveToPosition(-1);
    		...	
    	}
    }


    Da in fetchId musst du den Übergabeparameter "db" mit geben bzw deine Variable "mDb" setzen.


    EDIT: und das open() gehört weg

    Hi,


    mir fällt jetzt erst auf du sagst ArrayList, ist leider nicht threadsave. Probier mal einen Vector, der ist synchronized und ansonsten so ziemlich identisch.


    Mein Grundgedanke war jede Nachricht ist ein Thread der in den ThreadPool geworfen wird. Wenn der irgendwann mal Zeit und Lust hat schickt er die los und holt sich dann die nächste Nachricht die er wenn er wieder mal Zeit kriegt raus haut ...


    Gruß,
    matze

    Hi,


    hab zwar weder Kind noch kurz eins zur Hand, dass es testen könnte, aber mir selbst macht die App auch Spaß :)
    Die Mandala-Funktion ist ja echt cool. Habs auf meinem Samsung Galaxy Nexus getestet. Man kann alles gut bedienen und die Größe reicht aus, wobei man aber auch sagen muss, dass das Nexus ein riesen eumel ist für ein Handy ;)


    Sehr schöne und gelungene App, ich bewerte gleich mal im Play Store ;)


    Gruß,
    matze

    Hi Marco,


    ich habe für den Datenbankzugriff eine eigene Klasse die von SQLiteOpenHelper erbt. die onUpgrade sieht so aus:


    Java
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    		String[] sqls = context.getResources().getStringArray(R.array.upgrade); 
    		for (String sql : sqls) {
    			db.execSQL(sql);
    		}
    	}


    Die Datenbank ist ein Übergabeparameter, mit der muss ich nichts weiter anstellen. Mein String[] enthält zwar nur UPDATE Anweisungen aber das müsste analog laufen. Wenn doch ein Lock drauf liegt der nicht weg will, kannst du dir nicht erst alle alten werte raus ziehen, formatieren wie du willst, in einer geeigneten Datenstruktur zwischenspeichern und dann in einer zweiten for-schleife in die nächste Datenbank klopfen?


    Schreib mal wie genau du die Datenbankverbindung aufbaust, ob du überhaupt SQLite benutzt (ich bin jetzt einfach mal davon ausgegangen) und wie deine onUpgrade bisher aussieht, falls es nicht geht.


    Gruß,
    matze

    Ich verstehe. Hab es auch grad nochmal im Emulator getestet mit einem Tablet und hat sich gegenüber meinem Handy genauso verhalten.


    Vielen dank killphil ;)


    Ich markier dann als erledigt.

    Hi phil,


    du bist klasse ;) Genau sowas hab ich gesucht.
    Jetzt würde mich nur noch interessieren, wie genau sich die Zahl 550 ergibt und ob es das Ding dann auch in dynamisch gibt :) Bei mir tuts z.B. mit 625 so wie es soll ...


    Gruß,
    matze

    Hi Dennis,


    klingt nach einer klassischen 1:n Beziehung. Ich würde eine Tabelle "Track" machen mit ID, Name, TracklistID, Verweis auf "Album", Verweis auf eine "AlbumInterpret" Zwischentabelle. Die Tabelle "Album" hat dann ID, Name, Erscheinungsjahr, .... "Interpret" im Prinzip ähnlich. Die Zwischentabelle enthält nur den Verweis auf eine AlbumID und auf eine InterpretID und bildet zusammen einen kombinierten Primärschlüssel. So kann ein Album beliebig viele Interpreten haben (1:n).
    Eine weitere Tabelle "Punchline" hat auch wieder ID, TrackID, ... womit jeder Track beliebig viele Punchlines haben kann. Die Tabelle Tracklist hat auch wieder ID, Name ... und kann beliebig viele Tracks enthalten, da in "Track" der Verweis TracklistID auf die "Tracklist" zeigt.


    Also dieses Konstrukt fällt mir so spontan auf die schnelle runter getippt ein. Vermutlich hat das Konstrukt schwächen, aber das Grundprinzip dürfte klar sein.


    Gruß,
    matze

    Hi Uwe,


    erstmal danke für deine schnelle Antwort!


    Leider fruchtet das ganze trotz allem noch nicht so recht, aber dein Link hat mich etwas experimentierfreudig gestimmt also hab ich einfach mal paar sachen ausprobiert ...

    Java
    WebSettings settings = wv.getSettings();
    		settings.setUseWideViewPort(true);
    		settings.setLoadWithOverviewMode(true);
    		settings.setJavaScriptEnabled(true); 
    		settings.setDisplayZoomControls(true); 
    		settings.setEnableSmoothTransition(true);


    Wenn er läd ist das ganze immernoch zu groß aber wenn ich dann 2 mal auf die WebView tippe zoomt er raus und zeigt alles perfekt an. Jetzt ist nur die frage was muss ich setzen, dass er das von haus aus macht aber ich mir nicht mit irgendwelchen fixen angaben das drum für andere Displaygrößen verbau?
    Die Methode setTextZoom macht leider nicht das was ich brauche, Die Seite wird einfach breiter und links und rechts von meinem Text ist mehr Platz ....


    Gruß,
    matze

    Hi Leute,


    hab grad ein kleines Problem, die WebView ärgert mich :( Und zwar will die meine lokale html Seite nicht richtig darstellen.


    Meine WebView schaut so aus:


    HTML
    <WebView
            android:id="@+id/wvInfo"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:background="@android:color/transparent"
            android:layout_below="@+id/btnBack" />


    Die Seite lade ich wie Folgt:


    Java
    WebView wv = (WebView) findViewById(R.id.wvInfo);
    wv.loadUrl(getString(R.string.LOCALWEBVIEWPREFIX) +  getString(R.string.INFOPAGE));


    Meine HTML Datei enthält im Header die Zeile:

    HTML
    <meta name = "viewport" content = "width = device-width" user-scalable = "no">


    Leider geht die HTML-Seite über den sichtbaren Bereich meines Displays hinaus und ich muss nach links und rechts scrollen um alles zu sehen. Deshalb habe ich etwas gegoogelt und folgenden Schnipsel gefunden:

    Java
    WebSettings settings = wv.getSettings();
    settings.setUseWideViewPort(true);
    settings.setLoadWithOverviewMode(true);


    Die WebView zeigt sich ziemlich unbeeindruckt und es sind keine Änderungen feststellbar, außer ich entferne die Zeile mit dem viewport aus der HTML-Datei, dann zeigt der die Seite viel zu klein an.
    Ich habe schon in einem anderen Projekt eine WebView eingesetzt für den gleichen Zweck wie jetzt, da stand in meiner HTML-Datei kein viewport und WebSettings brauchte ich auch keine angeben, allerdings war die Seite auch ohne jegliches CSS. Da hatte er keinerlei Probleme und hat alles richtig umgebrochen.


    Heißt das jetzt für mich das CSS machts kaputt oder muss ich da noch was extra angeben? Braucht es die Angabe von viewport gar nicht oder ist sie einfach nur Falsch? Ich glaub viel fehlt nicht aber ich kriegs grad nicht hin ....


    Kann mir wer helfen?


    Gruß,
    matze

    Hi,


    also als ich gerade noch einmal gestartet habe hatte ich den alten Highscore noch drin. Aber mir ist gerade aufgefallen dass ich 2 mal auf die App drücken muss, damit sie auch wirklich startet. Beim ersten mal flackert nur kurz ein schwarzer Screen auf, der gleich wieder weg ist. beim zweiten mal geht es dann. Liegt da was im argen bei mir oder ist da noch wo der Hund drin? Wundert mich, dass mir das nicht schon früher aufgefallen ist, kam das vielleicht mit dem Bild rein?


    Gruß,
    matze

    Hi,


    hier mal ein Bildchen ;)


    [Blockierte Grafik: https://lh4.googleusercontent.…t_2012-03-21-16-03-29.png]


    Wenn ich aufs F drücke leitet er mich zu http://http//www.s-pinball.com/facebook/index.html weiter. Also auch tatsächlich mit dem zweiten http und ohne : . Gibt es natürlich nicht.


    Ich glaube mit dem Highscore stimmt was nicht ... ich hatte jetzt 33k und habe nur gewartet bis ich Game Over bin. Vorhin flogen da zich Kugeln rum und ging ewig dahin, kann ja gar nicht sein, dass das dann nur 35k waren oder?


    Gruß,
    matze

    Hi wasa,


    gemacht habe ich so etwas noch nicht aber ich würde eine ListView bauen und den Feed anzapfen. Der Feed ist ein XML, das ich mit einem SAXParser o.ä. einlesen würde und mir in einer kleinen Bean Daten wie Link zum Artikel, Bild, Überschrift, Inhalt, ... merken und dynamisch TextViews und ImageViews generieren. Beim antippen der Zeile würde ich dann zu einer neuen View wechseln und dort dann vermutlich eine WebView einsetzen.


    Schau dir mal den Heise Atom Feed an -> http://www.heise.de/newsticker/heise-atom.xml
    Dort ist jede News wie folgt unterteilt:


    HTML
    <entry>
    		<title>Carberp-Trojaner erbeutete 3 Millionen Euro</title>
    		<link href="http://www.heise.de/newsticker/meldung/Carberp-Trojaner-erbeutete-3-Millionen-Euro-1476794.html/from/atom10" />
    		<id>http://www.heise.de/newsticker/meldung/Carberp-Trojaner-erbeutete-3-Millionen-Euro-1476794.html/from/atom10</id>
    		<published>2012-03-21T15:25:00+01:00</published>
    		<updated>2012-03-21T15:26:17+01:00</updated>
    		<summary>In Moskau wurden acht Männer verhaftet, die über den Banking-Trojaner Carberp bis zu 3 Millionen Euro erbeutet haben sollen.</summary>
    		
    </entry>


    Also genau das was du willst.


    Ich hoffe ich konnte dir einen Denkanstoß geben ;)


    Gruß,
    matze

    Also grade als ich nur kurz angetestet habe hat er immer wieder eine neue Kugel hergegeben und wollte nicht mehr aufhören, vielleicht war ich auch nur zu ungeduldig weil ich ja nur schnell verlieren wollte um den Highscore zu sehen :)


    Ich fände es schön wenn es ein Hauptmenü gäbe mit Neues Spiel, Highscore und Anleitung. Dann kann man seinen Highscore auch mal einfach so betrachten. Vielleicht könnte man noch eine View mit Optionen machen wie Anzahl der Kugeln die man zur Verfügung hat, Spielername usw.


    So Spielereien wie Offline/Online Score wäre auch noch eine Überlegung wert finde ich.

    Hi,


    hab ein Samsung Galaxy Nexus mit ICS 4.0.2 drauf.
    Ich mein es nur gut, aber irgendwie ist deine App seltsam. Beim ersten drücken auf Start hat es 2 mal gezuckelt und ich hing irgendwo im nichts und es stand Game Over. Beim zweiten Versuch habe ich kurz vor der Kante dieser Bahn, die ich dann zum ersten mal wirklich gesehen habe, auf den Screen getippt und bin so von unten her durch die nächste Ebene geschwebt und nur die halbe Kugel hat raus geschaut. Dann weiß ich nicht ob diese "Bahn" bewusst so gebaut ist oder eigentlich flach/glatt sein sollte, aber schaut aus wie Treppenstufen. Das verstärkt dieses "gezuckel" durchgehend.
    Des weiteren sieht man da ja eigentlich nicht viel, man ist irgendwie zu nah an der Kugel und schaut zu steil drauf.
    Eigentlich bin ich ein Fan von so Games, aber deins ist wirklich noch early Beta ;)


    Ich hoffe ich habe dich jetzt nicht verärgert und du denkst dir nur "diese Idioten", ich würde mich freuen dein Game wachsen und besser werden zu sehen ;)


    Gruß,
    matze