2016-11-04 2 views
0

나는 안드로이드 애플 리케이션을 개발하는 멍청한 놈이다. 나는 묻고 싶다. 내 PreferenceActivity가 MainActivity로 되돌아 가지 않고 어떻게 PreferenceActivity로 돌아가고 싶은지 다시 한번 알려주십시오. 여기서는 PreferenceActivity의 테마를 변경하는 몇 가지 기능을 제공합니다. 이것은 내 PreferenceActivity를하다 : PreferenceActivity를 UpdateUI와 SharedPreferences의 차이점은 무엇입니까?

공용 클래스 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 이상인 경우 활동을 요청하십시오.

this.recreate(); 

그렇지 않으면 작업을 완료하고 같은 의도로 다시 시작하면됩니다.

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 
관련 문제