2016-07-05 11 views
0

Ich habe eine IntroActivity, wo ich einen Wert speichern, die von einem EditText gespeichert wird, in einer gemeinsamen Pref.SharedPreferences nicht durch Android App

In meinem SettingsActivity ich versuche, diesen Wert zu bearbeiten, aber auch wenn ich den freigegebenen Einstellungen Wert mit dem Schlüssel, den ich gerade bearbeitet habe, zeigt es immer noch den alten Wert. Was mache ich falsch? Hier

ist die IntroActivity

public class IntroActivity extends Activity { 

    String PREF = "MyPrefs"; 
    Button mDone; 
    EditText mTemperature; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_intro); 

     mDone = (Button) findViewById(R.id.done); 
     mTemperature = (EditText) findViewById(R.id.temperature); 

     mDone.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int temperature = Integer.parseInt(mTemperature.getText().toString()); 
       SharedPreferences preferences = getSharedPreferences(PREF, Context.MODE_PRIVATE); 
       SharedPreferences.Editor edit = preferences.edit(); 
       edit.putInt("sweater", temperature); 
       edit.commit(); 

       Intent intent = new Intent(IntroActivity.this, MainActivity.class); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

Hier ist die SettingsActivity

public class SettingsActivity extends ActionBarActivity { 

    Button mDone; 
    EditText mTemperature; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings); 

     mDone = (Button) findViewById(R.id.done); 
     mTemperature = (EditText) findViewById(R.id.temperature); 

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

       SharedPreferences preferences = getSharedPreferences("sweater", 0); 
       SharedPreferences.Editor edit = preferences.edit(); 

       int temp = preferences.getInt("sweater", 0); 
       int updateSweater = Integer.parseInt(mTemperature.getText().toString()); 
       edit.remove("sweater"); 
       edit.putInt("sweater", updateSweater); 
       boolean saved = edit.commit(); 
       preferences.getInt("sweater", 0); 

       Toast.makeText(SettingsActivity.this, "Sweater Weather Updated", Toast.LENGTH_SHORT).show(); 

       Map<String, ?> map = preferences.getAll(); 
       for(Map.Entry<String,?> entry : map.entrySet()){ 
        Log.d("map values",entry.getKey() + ": " + 
          entry.getValue().toString()); 
       } 
       Intent intent = new Intent(SettingsActivity.this, MainActivity.class); 
       startActivity(intent); 
      } 
     }); 
    } 
} 

Antwort

3

Ich versuche, diesen Wert zu bearbeiten, aber auch, wenn ich rufe die gemeinsamen Vorlieben Wert mit dem Schlüssel, den ich gerade editiert, zeigt es immer noch den alten Wert an. Was mache ich falsch?

Da SharedPreferences Name in beiden Aktivitäten unterschiedlich ist.

In IntroActivity mit MyPrefs und in SettingsActivity mit sweater.

Verwenden Sie den gleichen Namen in beiden Aktivitäten. um es sweater zu MyPrefs in SettingsActivity Änderung arbeiten:

SharedPreferences preferences = getSharedPreferences("MyPrefs", 0); 
2

Diese beiden Linie in beiden Tätigkeiten unterschiedlich sind

SharedPreferences preferences = getSharedPreferences(PREF, Context.MODE_PRIVATE); 

und

SharedPreferences preferences = getSharedPreferences("sweater", 0); 

Für dieses Problem gibt es zwei pref erstellen Dateien und lesen Sie die Werte aus einer anderen Datei.

1

ich in Ihrem SettingsActivity glauben, müssen Sie SharedPreferences preferences = getSharedPreferences("MyPrefs", 0);

Statt SharedPreferences preferences = getSharedPreferences("sweater", 0);

Sie speichern den Wert in "Pullover" Preference verwenden und sie von "MyPrefs" geladen.

Verwandte Themen