SharedUI如何使用UpdateUI?

时间:2016-11-04 19:03:28

标签: java android sharedpreferences

我是开发Android应用程序的菜鸟。我想问一下。我的PreferenceActivity如何在不返回MainActivity的情况下更新并再次转到PreferenceActivity。在此,我给出了一些改变PreferenceActivity主题的功能。这是我的PreferenceActivity:

公共类SettingsPreference扩展了PreferenceActivity {

SwitchPreference themeSwitch;
String myPref = "preferences";
SharedPreferences.Editor editor;
String summary;
int theme;

@Override
public void onCreate(Bundle savedInstanceState)
{
    // TODO: Implement this method
    final SharedPreferences.Editor editor = getSharedPreferences(myPref, MODE_PRIVATE).edit();

    final SharedPreferences prefs = getSharedPreferences(myPref, MODE_PRIVATE); 
    final String summary = prefs.getString("stringSummary", "Default theme");
    final int theme = prefs.getInt("intTheme", (android.R.style.Theme_DeviceDefault_Light));   

    setTheme(theme);

    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.settings_preference);

    themeSwitch = (SwitchPreference) findPreference("switchTheme");
    themeSwitch.setSummary(summary);

    if (themeSwitch != null) {
        themeSwitch.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference arg0, Object isOnObject) {
                    boolean isThemeOn = (Boolean) isOnObject;
                    if (isThemeOn) {
                        Toast.makeText(SettingsPreference.this, "Theme Dark ON", Toast.LENGTH_SHORT).show();
                        editor.putString("stringSummary", "Theme Dark ON");
                        editor.putInt("intTheme", (android.R.style.Theme_DeviceDefault));
                        editor.apply();
                        themeSwitch.setSummary(summary);

                    } else {
                        Toast.makeText(SettingsPreference.this, "Theme Dark OFF", Toast.LENGTH_SHORT).show();
                        editor.putString("stringSummary", "Theme Dark OFF");
                        editor.putInt("intTheme", (android.R.style.Theme_DeviceDefault_Light));
                        editor.apply();
                        themeSwitch.setSummary(summary);

                    }
                    return true;
                }
            });
    }
}

}

2 个答案:

答案 0 :(得分:2)

如果更改“活动”布局,则只需重新启动它即可。 尝试在onPreferenceChange()的末尾添加它。

如果您使用的是API11 +,请调用活动。

this.recreate();

否则,我们只需要完成活动并以相同的意图再次启动它。

Intent intent = getIntent();
finish();
startActivity(intent);

答案 1 :(得分:0)

例如,如果您每20秒更新一次,则为代码:

 import android.os.Handler;

    Handler handler  = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            //update UI
        }
    },2000);

将它放入一个函数中并在运行中重新调用。