0

私のアプリでは、ユーザーが最初に見たアクティビティは、言語を選択することです。ユーザーがアプリケーション内で言語を変更したときにアンドロイド:ラベルのテキストが変更されないのはなぜですか?

ユーザーがfrenchを選択し、次にActivityB、次にActivityCに行くとします。

言語を変更することを決定しました。

アクティビティBに戻り、最初のアクティビティに戻り、スペイン語として言語を選択します。

アクティビティBに行くと、フラグメント/アクティビティ内の他のテキストはすべてスペイン語に変更されますが、アンドロイド:ラベルはフランス語で残ります。これを修正する方法は?

これは私の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:confgChanges = "orientation | keyboard | locale"のようなStackoverflowの答えを探しました。しかし、それは動作しません。 – user3705478

+0

画面を回転させると、アプリが再び再開します。したがって、これを処理するには、setLocaleメソッドとsetTitleをoncreateのアクティビティラベルに配置する必要があります –

関連する問題