2012-01-06 4 views
1

나는 지금까지 로케일을 변경하기위한 설정을 추가하여 사용자가 로케일을 앱의 로케일과 다르게 사용할 수 있도록 Android app에서 작업하고 있습니다. 액티비티는 잘 작동하지만 위젯은 앱에 설정되지 않은 기기의 로케일을 계속 사용합니다.로케일을 위젯으로 강제하는 방법

위젯이 활동과 같이 단말기에 설정된 것과 다른 로케일을 사용하도록 할 수있는 방법이 있습니까?

감사합니다.

답변

-1

나는 스피너에 언어를 넣었습니다. 선택한 로케일을 환경 설정 (환경 설정)에 저장하고 로케일을 변경하는 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) {} 
}); 
+0

이것은 위젯과 아무런 관련이 없습니다. @ mmohab은 이미 액티비티에서이를 수행하는 방법을 알고 있습니다. 이론상 위젯은 onppdate에서 sharedpreferences를 읽을 수 있지만 onUpdate가 항상 실행되는 것은 아닙니다. – CQM

관련 문제