안녕하세요..
다름이 아니오라 제가 하고 싶은것은 강제로 어플리케이션의 화면을
다시 그리고 싶습니다.
현재 onCreate() 에서 설정 값에 따라 여러가지 테마중 한가지를 선택해서 화면을 그리고 있습니다.
문제는 설정하는 화면에서 설정값을 설정 후 back 키를 이용하여 이전 화면으로 돌아오면
원하는 테마로 변경이 되어 있지 않는 문제가 있는데요
이를 해결 할 수 있는 방법이 무엇이 있을까요?
configuration을 이벤트를 발생시키기 위해서
언어설정이나 fontScale 등을 바꾸는 코드는 많이 있는데요.
이러한 변화 없이 업데이트 시키는 방법을 알고 싶습니다.
ex)
try {
IActivityManager am = ActivityManagerNative.getDefault();
Configuration config = am.getConfiguration();
Locale l = config.locale;
if(l.equals(l.ENGLISH))
config.locale = l.JAPAN;
else
config.locale = l.ENGLISH;
config.userSetLocale = true;
am.updateConfiguration(config);
} catch (RemoteException e) {}
브레이커즈님 답변 감사합니다. 하지만
onResume에서 구현하니
preference 내용을 삭제 하고 다시 그려도 다른 문제가 발생하더군요..ㅠ.ㅠ
addPreferencesFromResource() 을 사용하니 목록이 중복되서 생성 되는 문제가 발생합니다....
현재 onCreate()에서 선택된 테마값으로 다시그리는 부분을 메소드로 빼신후, onCreate()와 onResume()에서 같이 로드하세요.
낵교님 감사합니다, 물론 현재 그렇게 하고 있죠,
setTheme() 라는 메서드가 SetContentView() 호출 이전에 설정이 되어 있어야 한다더군요,
onCreate()와 onResume()에서 아무리 setTheme()를 호출하여도 적용이 안되더군요;
그래서 도달한 결과가 위와 같이 ActivityManagerNative.updateConfiguration() 밖에 없더군요.
문제는 제가 위와 같이 언어설정을 바꾸고서 해서는 안되는 지라, 강제로 updateConfiguration()가 실행되는 방법을 찾고 있습니다.




onResume에서 구현하세요.