Hi,
ich bin noch ziemlich am Anfang mit der Android app Entwicklung. Ich habe mir eine kleine App geschrieben. In der onCreate Methode starte ich eine Methode die mir Bilder anzeigt und zu jedem Bild ein Ton abspielt.Danach verschwienden die Bilder wieder(Das ist gewollt!). Wenn ich nun meine Bildschirmsperre anschalte werden die Bilder wieder im Hintergrund von neu angezeigt und der Ton wird erneut abgespielt. Wenn ich die Bildschirmsperre wider rausmache passiert das ganze noch mal von vorne.
Ich weiß, dass es an den Activitys liegt und speziell daran dass die OnCreate Methode jedesmal aufs neue aufgerufen wird.
Deswegen habe ich mir eine globale Variable "int weiter" angelegt. Wenn die Bilder/Sound einmal abgespielt werden und die Methode einmal durch ist wird "weiter = 1" gesetzt. Wenn meine onCreate methode dann nochmal aufgerufen wird, wird erst mal abgefragt ob "weiter == 1" ist. Wenn ja dann tue nix.
So hätte ich verhindert dass die Methode ein weiteres mal aufgerufen wird.
Mein Problem:
ich versuche das ganze mit SharedPreferences zu lösen. Ich habe schon alles mögliche durchgelesen und kriege es einfach nicht hin dass die globaleVariable abgespeichert wird.
Danke im Vorraus
mein Code(in vereinfachter form)
package com.example.kamil.learningcolors;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.res.AssetFileDescriptor;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.Toast;
import android.os.Handler;
public class game extends Activity implements Runnable {
public static final String FILENAME = "PreferencesFilename";
public static final boolean farbenSindDurch = false;
int weiter = 0;
SharedPreferences settings;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
weiter = settings.getInt("Zahl", -1);
//Hier pruefe ich ab, ob ich die Methode schon mal durchlaufen ist. Wenn "weiter == 1" dann wurde sie schon aufgerufen und es soll nix weiter geschehen.
if (weiter != 1) {
handlerBlau.postDelayed(blauRun, 1000);//Die Methode ruft die bilder usw. auf;
}
@Override
protected void onStop() {
super.onStop();
//Hier speichere ich mir die zahl 1;
settings = getSharedPreferences(FILENAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putInt("Zahl", 1);
editor.commit();
}
Alles anzeigen