2016-11-04 10 views
0

私はアンドロイドアプリを開発することにnoobです。私は尋ねたい。私のPreferenceActivityがMainActivityに戻り、PreferenceActivityに戻らずにどのように更新したいのですか?ここでは、PreferenceActivityのテーマを変更するための機能をいくつか紹介します。これは私のPreferenceActivityです:PreferenceActivity SharedPreferencesとUpdateUIの違い

パブリッククラスSettingsPreferenceが延び{

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 +の場合は、アクティビティを呼び出してください。

それ以外の場合は、アクティビティを終了して同じ意図でもう一度開始する必要があります。

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 
関連する問題