Я немного запутался с тем, как работает это общее предпочтение. У меня был пример кода с веб-сайта на основе общих настроек. Моя проблема в том, что editor.commit () не обновляется сразу. Вот мой пример кода,
public class PreferencesDemo extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Get the app's shared preferences
SharedPreferences app_preferences =
PreferenceManager.getDefaultSharedPreferences(this);
// Get the value for the run counter
int counter = app_preferences.getInt("counter", 0);
// Update the TextView
TextView text = (TextView) findViewById(R.id.text);
TextView text1 = (TextView) findViewById(R.id.text1);
text.setText("This app has been started " + counter + " times.");
// Increment the counter
SharedPreferences.Editor editor = app_preferences.edit();
editor.putInt("counter", counter+2);
editor.apply();
editor.commit(); // Very important
text1.setText("This app has been started " + counter + " times.");
}
}
Как видите, у меня есть счетчик, значение которого я отображаю в первом textView, а после оператора commit я печатаю обновленное значение в следующем TextView. Но все же оба текстовых представления выводят одно и то же значение по умолчанию, что и «0». Поэтому, если я перезапущу приложение, оба текстовых представления будут обновлены.
Как решить эту проблему. Любая помощь приветствуется.