2016-07-05 3 views
0

У меня есть IntroActivity, где я сохраняю значение, сохраненное из EditText, в общей привилегии.SharedPreferences, не сохраняющийся в приложении для Android

В моем SettingsActivity Я пытаюсь изменить это значение, но даже когда я вызываю значение общих настроек с только что отредактированным ключом, он все еще показывает старое значение. Что я делаю не так?

Вот 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); 
      } 
     }); 
    } 
} 

Вот 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); 
      } 
     }); 
    } 
} 

ответ

3

Я пытаюсь изменить это значение, но даже когда я называю 'Разделяемые предпочтения значение с ключом я просто отредактированный, он по-прежнему показывает старое значение. Что такое Я делаю неправильно?

Потому что SharedPreferences имя отличается от обоих видов деятельности.

В IntroActivity с использованием MyPrefs и в SettingsActivity с использованием sweater.

Используйте одно и то же имя в обеих видах деятельности. чтобы заставить его работать изменения sweater к MyPrefs в SettingsActivity:

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

Эти две линии отличаются в обоих видов деятельности

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

и

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

Для этой задачи вы должны создать два прив файлы и читать значения из другого файла.

1

Я верю в вашу SettingsActivity, вам нужно использовать SharedPreferences preferences = getSharedPreferences("MyPrefs", 0);

Вместо SharedPreferences preferences = getSharedPreferences("sweater", 0);

Вы сохраняете значение в «свитер» Предпочтение и загрузки его «MyPrefs».

 Смежные вопросы

  • Нет связанных вопросов^_^