Problem bei SharedPreference

  • 0 Antworten
  • Letztes Antwortdatum
C

crusad2000

Neues Mitglied
0
Hallo, habe zuvor noch nicht SharedPreference benutzt und schon schleichen sich die ersten Fehler ein. :mellow:

Und zwar habe ich 2 Activities. Ich versuche nun per SharedPreference die Daten zu übergeben.
Mein Ziel ist es bei der 2. Activity einen Button zu drücken, wird dieser Button gedrückt gelangt man in eine 3. Activity. Geht man nun zurück oder startet das Spiel neu möchte ich, dass er von der 1. direkt in die 3. Activity reinspringt. Klingt alles ein bisschen wirr, vielleicht hier mal der Code:

Klasse1:
Code:
class Klasse1 implements Activity {

private ArrayList sources;

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.blabla1);



loadPreference();


gridView.setOnItemClickListener(new OnItemClickListener()
        {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                    long arg3) {
            	
            	
            	
            	if (sources.get(position)=="n"){
            		
                    savePreferences();
            	    Intent i = new Intent(getApplicationContext(), Klasse2.class);
                    startActivity(i);
                    finish();
            		
            		
            	}
            	else{
            	savePreferences();
            	Intent i = new Intent(getApplicationContext(), Klasse3.class);   
                startActivity(i);
                finish();
            	}
            }
        });

}




private void loadPreference(){
	 sources = new ArrayList<String>();
	 SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
	  for(int i = 0; i<6; i++){
         
          sources.add(sharedPreferences.getString("String"+i, "n"));
	  }
	  
	  
	  
  }
 
 private void savePreferences(){
 	
     SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
     SharedPreferences.Editor editor = sharedPreferences.edit();
    
     for(int a = 0; a<6; a++){
         editor.putString("String"+a, sources.get(a));
    }
     
     editor.commit();
  }

}

Klasse2:
Code:
class Klasse2 implements Activity {

private ArrayList<String> sources2;


public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.full_image_play);


loadPreference;

button_level1.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {

				Intent i = new Intent(FullImagePlayActivity.this, Klasse3.class);
				
				
				sources2.set(position, "y");
				
				savePreferences();
			
                startActivity(i);
                finish();
                
               
				
			}
		});
}





 private void loadPreference(){
   	 sources2 = new ArrayList<String>();
   	  SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
   	  for(int i = 0; i<6; i++){
   		     sources2.add(sharedPreferences.getString("String"+i, "a"));
   		}
   	  
   	  
   	  
     }
    
    private void savePreferences(){
    	
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
       
        for(int a = 0; a<6; a++){
            editor.putString("String"+a, sources2.get(a));
       }
        
        editor.commit();
     }

}

Test 1: Ich installiere die App und starte Klasse 1, nun drücke ich einen Button und gelange zu Klasse 2, da ja der default Wert "n" ist, alles wunderbar. Nun bin ich in Klasse 2 und drücke dort den Button jetzt müsste er ja theoretisch in die ArrayList an Position position ein "y" schreiben und mit savedPreference speichern. Klicke ich jetzt die zurückTaste und drücke erneut in Klasse 1 den Button komme ich aber wieder in Klasse 2, und nicht in Klasse 3, obwohl ich in die else Bedingung reinrutschen müsste.
Wenn ich jetzt im Emulator einen ForceStop mache und die App neustarte, gelange ich wie gewollt in Klasse 3?? Aber es muss doch sofort klappen, auch während die App läuft.
Ich hoffe mir kann geholfen werden ,vielen Dank im voraus.

liebe grüße
 
Zurück
Oben Unten