Как сделать так, чтобы андроид выполнял "перезагрузку" извне?

У меня есть основное действие Android, показывая некоторые данные, которые взяты из базы данных. Теперь у меня есть PreferenceActivity который отображается, когда пользователь хочет изменить какое-либо предпочтение или удалить содержимое базы данных. Но если это так, как я могу вызвать "перезагрузку" или что-то из основного действия из класса вне основного действия?

2 ответа

Установить OnSharedPreferenceChangeListener слушатель в вашем MainActivity автоматически обнаруживать любые изменения в настройках.

SharedPreferencesListener

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());
Другие вопросы по тегам