2012-04-30 3 views
3
안드로이드

에서 로케일을 변경 한 후 내 안드로이드 응용 프로그램에서 로케일을 변경하려면 그래서 나는 다음과 같은 코드를 사용 :다시로드 뷰

Locale locale = new Locale('fr'); // or whatever 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 

getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics()); 

을 그러나 문제는 아무것도 내보기에 변경되지 것입니다. 로케일 변경을 표시하려면 어떻게 다시로드해야합니까?

편집 : 모든보기가 영향을받습니다 : 버튼, 텍스트 뷰, 체크 박스. 물론 수동으로보기의 텍스트를 설정하면 작동하지만 모든 위젯에서 setText()를 호출하고 싶지 않습니다 ... 사용자 이름이보기에 표시되고 로그 오프 한 후에 업데이트되지 않았기 때문에이 사실을 알고 있습니다./다른 사용자와 로그온하십시오. 그래서 수동으로 텍스트 뷰를 업데이트했지만 문제가 모든 뷰에 대해 로캘을 변경할 때 동일하다는 것을 알았습니다.

+0

우선, 사용중인 문자열에 대한 변환이 있습니까? – pandre

+0

물론 en, fr 및 nl이 폴더의 값 -en, 값 -fr, 값 -nl에 있습니다. – Alexis

+0

영향을받는보기의 유형을 알 수 있습니까? TextView, EditText, CheckBox입니까? – pandre

답변

0

로케일을 변경할 때 Activity의 "다시로드"하는 방법을 묻는 것 같네요.

내가 아는 한, View을 다시 레이아웃하거나 다시 만들거나 텍스트를 다시 설정해야합니다. 그러나 더 나은 해결책을 찾으면 공유하십시오.

+0

마침내 모든보기가 로캘 변경 후 다시로드되도록 앱을 닫습니다. – Alexis

+0

@jafar 어떻게 앱을 다시 시작하면 문제가 해결됩니까? 이전 상태가 손실 될 수있는 탭이있는 앱을 생각해보십시오. – vrs

+0

@jafar이 문제를 어떻게 해결했는지 설명해주십시오. 회신 해주십시오. –

0

좋아요. 해결책을 찾았으며 공유하고 싶습니다.

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // refresh your views here 
    super.onConfigurationChanged(newConfig); 
} 

더 많은 정보를 원하시면 here 가서 활동에의 onConfigurationChanged()를 매니페스트

android:configChanges="locale" 

이를 추가하고 우선합니다. 도움이 되길 바랍니다. :)

관련 문제