나는 스피너에 언어를 넣었습니다. 선택한 로케일을 환경 설정 (환경 설정)에 저장하고 로케일을 변경하는 onConfigurationChanged 메소드에서 사용합니다. 나는 너가 동일하거나 유사한 것을한다고 추정한다.
트릭은 Spinner의 OnItemSelected 메서드에서 OnConfigurationChanged를 호출하고 리소스에서 텍스트를 설정하고 영향을받는 모든 위젯을 무효화한다는 것입니다. Voilá! 모든 텍스트가 선택한 언어로 표시됩니다.
spLanguages.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
prefs.saveInt("language", spLanguages.getSelectedItemPosition());
lan = spLanguages.getSelectedItemPosition();
onConfigurationChanged(new Configuration());
btnStart.setText(getResources().getString(R.string.main_start));
btnStart.invalidate();
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {}
});
이것은 위젯과 아무런 관련이 없습니다. @ mmohab은 이미 액티비티에서이를 수행하는 방법을 알고 있습니다. 이론상 위젯은 onppdate에서 sharedpreferences를 읽을 수 있지만 onUpdate가 항상 실행되는 것은 아닙니다. – CQM