1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. menseken, 05.05.2011 #1
    menseken

    menseken Threadstarter Neuer Benutzer

    Hallo!

    Dank (u.a.) Eurer Hilfe konnte ich zuletzt ein JavaScript-Programm für Android-Java umbauen, (hier).

    Einige kleine Bugs sind noch drin:

    Meine App bringt z.B. leider beim "Resume" (vom Desktop, usw.) die unschöne Meldung der "unerwarteten Beendigung". Ich nehme an, dass ich folgendes Array, das das Spiel beschreibt, irgendwie sichern müsste.

    WIE ungefähr kann ich das WO am besten machen?
    Code:
    int mJall[][][][]=new int[8][9][7][3]; // ALLES: Reihe/Zeile/Höhe/ Name,X-,Y-Wert
    (Oben werden die Werte später eingesetzt.)

    Folgender (vereinfachter) Code malt die Steine in die Canvas einer SurfaceView:
    Code:
    private void doDraw(Canvas canvas) {
       for (int i=0;i<8;i++)   for (int j=0;j<9;j++)   for (int k=0;k<7;k++){
          canvas.drawBitmap(myBitmaps [mJall[i][j][k][0]], i*62-k*8, j*67-k*7, null);
    }}
    (Nach und nach werden die gelöschten Steine im Array markiert.)

    Vielen Dank schon im Voraus für Eure Hilfe!

    (Als kleine Info hier das schon 'mal gepostete Bild: )
    .
     

    Anhänge:

  2. swordi, 05.05.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    ganz genau

    du solltest im onPause() deinen spielstand sichern

    und im onResume wieder laden

    bzgl deiner fehlermeldung - schau im logcat nach, das gibt nützliche hinweise
     
  3. menseken, 05.05.2011 #3
    menseken

    menseken Threadstarter Neuer Benutzer

    Hmmm - ja.

    ... aber wie? :

    In eine neue Variable? In eine SQLite-DB?

    Könntest Du mir sagen, wie & wohin ich das am besten mache?
    (Ich bin kein Informatiker, sondern Grafiker mit Spieldrang...)
     
  4. swordi, 05.05.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    naja

    du benötigst halt eine globalere datenstruktur, die auch beim erneuten öffnen der app, wenn sie noch im hintergrund läuft, die daten behaltet.

    evtl eine datenstruktur in der application anlegen.
     
  5. ko5tik, 06.05.2011 #5
    ko5tik

    ko5tik Android-Experte

    Ich würde empfehlen einen Java-Object-\[Baum\] im JSON-Datei zu sichern. Ich verwende meine selbstgestrickte Datenbindung-Bibliothek:

    https://github.com/ko5tik/jsonserializer
     
  6. menseken, 07.05.2011 #6
    menseken

    menseken Threadstarter Neuer Benutzer

    Vielen Dank für Eure hilfreichen Antworten -

    ... aber ich bin leider "nur" ein Grafiker, der versucht ein vorhandenes Problem auf (für mich) übersichtliche Art & Weise zu lösen.
    Ich habe auf der developer.android.com-Seite Folgendes gefunden:

    Ich habe zwar ein 4-dimensionales Array, aber das werde ich dann (wie bei der Erstellung) über mehrfach geschachtelte for-Schleifen als String speichern.

    Danke nochmals, Ciao, Clemens
     
  7. JoeBonham, 12.05.2011 #7
    JoeBonham

    JoeBonham Neuer Benutzer

    Hallo menseken,
    zum Speichern deines int-arrays kannst du die onSaveInstanceState-Methode in deiner Activity wie folgt überschreiben:
    @Override
    public void onSaveInstanceState(Bundle savedInstanceState){
    //savedInstanceState.putIntArray(key, value);
    savedInstanceState.putIntArray("MeineSteinchen", mJall[][][]);
    super.onSaveInstanceState(savedInstanceState);
    }

    Nun wird beim Stoppen (z.B. Display-Orientierungswechsel) der Anwendung das int-array gespeichert.

    Beim Start/Resume der Anwendung holst du es dann in der onCreate-methode folgendermaßen zurück:
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mJall[][][] = savedInstanceState.getIntArray("MeineSteinchen");
    ...

    Hoffe, dass ich rechtzeitig helfen konnte.
    Marco
     
    menseken bedankt sich.
  8. menseken, 12.05.2011 #8
    menseken

    menseken Threadstarter Neuer Benutzer

    Das sieht ja wirklich GUT aus:

    übersichtlich, verständlich und KONKRET !
    Vielen Dank, Marco - ich gehe davon aus, dass es genau so funktioniert.

    DANKE !
     

Diese Seite empfehlen