0

내 응용 프로그램이 영어와 스페인어의 두 가지 언어로 실행됩니다.이 때문에 값과 값 -sp라는 두 개의 폴더를 유지합니다.android에서 버튼 클릭시 응용 언어 변경

내가 SettingsActivity에 버튼 하나를 달았습니다. 총 애플리케이션을 선택한 언어로 변경했기 때문에 첨부 된 코드를 작성했습니다.

내 문제는 내가 버튼을 클릭하고 뒤로 버튼을 누르면 응용 프로그램이 잠시 동안 검은 색 화면을 보여주고있다가 나타나는 것입니다.

이력서의 모든 활동에서 다시보기를 새로 고치기 위해 onCreate를 호출 중입니다. 비록 내가 이것을 했더라도 검은 화면이 나타납니다.

누구든지이 문제를 해결할 수 있습니까?

미리 감사드립니다.

내 코드

english.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) 
       { 
         languagePopup.dismiss(); 
         Locale locale2 = new Locale("en"); 
         Locale.setDefault(locale2); 
         Configuration config2 = new Configuration(); 
         config2.locale = locale2; 
         getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics()); 
         changLanguae(); 
         if(language.equalsIgnoreCase("English")) 
          Constants.isLanguageChanged=false; 
         else 
          Constants.isLanguageChanged = true; 

       } 
      }); 
      spanish.setOnClickListener(new OnClickListener() 
      { 

       @Override 
       public void onClick(View v) 
       { 
         languagePopup.dismiss(); 
         Locale locale2 = new Locale("es"); 
         Locale.setDefault(locale2); 
         Configuration config2 = new Configuration(); 
         config2.locale = locale2; 
         getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics()); 
         changLanguae(); 
         if(language.equalsIgnoreCase("Spanish")) 
          Constants.isLanguageChanged=false; 
         else 
          Constants.isLanguageChanged = true; 

       } 
      }); 
+0

문제가되지는 않겠지 만 values-sp에 대해 확실합니까? es - 스페인어 es_US - 스페인어, 미국 –

+0

참조 http://stackoverflow.com/a/28385931/3496570 – Nepster

답변

1

뷰의 값 설정 부분을 복사하는 방법을 작성하고) (당신의 onResume에이 방법을 사용합니다. onResume에서 전체에서 onCreate()를

1
쓸 필요 없다

앱의 언어 변경에 대한 더 좋은 방법은 사용자가 기기 설정에서 언어 및 입력 설정을 변경하고 기기 및 앱이 해당 언어로 작성된 폴더에서 UI를 렌더링하여이 변경 사항을 적절하게 처리하도록하는 것입니다. 한 예가 입니다.