Как сделать так, чтобы андроид выполнял "перезагрузку" извне?
У меня есть основное действие Android, показывая некоторые данные, которые взяты из базы данных. Теперь у меня есть PreferenceActivity
который отображается, когда пользователь хочет изменить какое-либо предпочтение или удалить содержимое базы данных. Но если это так, как я могу вызвать "перезагрузку" или что-то из основного действия из класса вне основного действия?
2 ответа
Установить OnSharedPreferenceChangeListener
слушатель в вашем MainActivity
автоматически обнаруживать любые изменения в настройках.
MainActivity.java
public class MainActivity extends ... {
private SharedPreferences settings;
private SharedPreferences.OnSharedPreferenceChangeListener listener;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
settings = PreferenceManager.getDefaultSharedPreferences(this);
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// Refresh display
refreshDisplay();
}
};
// Register the listener on the SharedPreferences
settings.registerOnSharedPreferenceChangeListener(listener);
// Other code
}
public void refreshDisplay() {
// Retrieve entries from sharedPreferences & display them, e.g
String prefValue1 = settings.getString("key1", "default value 1");
String prefValue2 = settings.getString("key2", "default value 2");
// Update UI with these values
}
}
РЕДАКТИРОВАТЬ:
Вот как твоя PreferenceActivity
должно быть:
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// R.xml.settings refers to the XML layout file named "settings"
// in your res/xml directory
addPreferencesFromResource(R.xml.settings);
}
}
Если вы просто хотите перезарядить активность, вы можете сделать что-то вроде этого:
finish();
startActivity(getIntent());