2016-11-04 18 views
0

我是开发android应用程序的noob。我想问一下。我的PreferenceActivity如何更新而无需返回MainActivity并再次转到PreferenceActivity。在这里,我给了一些功能来改变PreferenceActivity的主题。这是我的PreferenceActivity:SharedPreferences如何与UpdateUI?

公共类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; 
       } 
      }); 
    } 
} 

}

回答

0

如果你有每20秒例如更新,这是代码:

import android.os.Handler; 

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

认沽这在一个函数中并在运行中重新调用。

2

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

如果您在API11 +中,请在活动中调用。

this.recreate(); 

否则,我们只需要完成活动并以相同的意图重新开始。

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