2016-10-11 13 views
0

내 앱 내에서 사용자가 보게되는 첫 번째 활동은 언어를 선택하는 것입니다.사용자가 내 앱에서 언어를 변경할 때 android : label의 텍스트가 변경되지 않는 이유는 무엇입니까?

사용자가 french를 선택한 다음 ActivityB로 이동 한 다음 ActivityC로 이동하면됩니다.

이제 언어를 변경하기로 결정했습니다.

그래서 ActivityB로 돌아간 다음 매우 첫 번째 활동으로 이동하여 스페인어로 언어를 선택합니다.

다시 ActivityB로 이동하면 조각/활동 내의 다른 모든 텍스트가 스페인어로 변경되지만 android : label은 여전히 ​​프랑스어로 유지됩니다. 이 문제를 해결하는 방법? 내 ActivityA 내 경우

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          final Bundle savedInstanceState) { 

     View rootView = inflater.inflate(R.layout.fragment_choose_language, container, false); 
     radioGroup = (RadioGroup) rootView.findViewById(R.id.lang_choice_radio); 
     radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
     { 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       switch(checkedId){ 
        case R.id.english_lang: 
         // do operations specific to this selection 
         setLocale("en_US"); 
         Intent intentEng = new Intent(getActivity(), Choose_Country.class); 
         startActivity(intentEng); 
         break; 

        case R.id.indonesian_lang: 
         // do operations specific to this selection 
         setLocale("in"); 
         Intent intent = new Intent(getActivity(), Choose_Country.class); 
         startActivity(intent); 
         break; 
       } 
      } 
     }); 
     return rootView; 
    } 

    public void setLocale(String lang) { 
     myLocale = new Locale(lang); 
     Resources res = getResources(); 
     DisplayMetrics dm = res.getDisplayMetrics(); 
     Configuration conf = res.getConfiguration(); 
     conf.locale = myLocale; 
     res.updateConfiguration(conf, dm); 
     Locale.setDefault(myLocale); 
     onConfigurationChanged(conf); 
     Intent refreshIntent = new Intent(getActivity(), ChooseLanguage.class); // refresh the activity 
     refreshIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     refreshIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(refreshIntent); 
     getActivity().finish(); 
    } 
+1

+0

그것이 이미 자리에있는 방법입니다. – user3705478

+0

이 줄의 활동을 마치고 있습니다 getActivity(). finish(); 그런 다음 사용자가 [활동 B에서]이 활동 [A]로 어떻게 되돌아 갈 수 있습니까? –

답변

1

을 보는 방법

이이며, 응용 프로그램은 변경 로케일 후 실행 바 언어를 변경하지 않습니다. 최근 앱에서 앱을 삭제하면 앱이 완전히 닫힙니다. 해결하려면 응용 프로그램을 새로 고치려면 setTitle(R.id.myapplabel)을 사용하고 을 생성하면을 생성하므로 응용 프로그램을 다시 시작할 필요가 없습니다. string.xml에 활동 레이블을 번역하면 제대로 작동합니다.

+0

이제 다른 문제가 있습니다. ActivityA에서 불어를 선택한 후에, 나는 ActivityB에 가서 모든 것을 불어로 본다. 그러나 휴대 전화를 돌리면 전체 조각이 영어로 바뀝니다 (기본값). 나는 android를 사용하는 것과 같은 Stackoverflow 응답을 검색했다 : confgChanges = "orientation | keyboard | locale". 그러나 그것은 효과가 없습니다. – user3705478

+0

화면을 회전하면 앱이 다시 시작됩니다. 따라서 이것을 처리하기 위해서는 setLocale 메서드와 setTitle을 oncreate의 액티비티 레이블에 넣어야합니다. –