アプリケーションが言語を変更しないのはなぜですか?

ファビアンロモ

アクティビティで、アプリの言語を変更するために次のことを行いました。

    private void changeLanguage(String stringLanguage){
        Locale locale = new Locale(stringLanguage);
        Locale.setDefault(locale);
        Configuration config = new Configuration();
        config.locale = locale;
        getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());

        Intent refresh = new Intent(ActLanguage.this, ActLanguage.class);
        startActivity(refresh);
        finish();
    }

ただし、そのアクティビティのみが言語を変更し、プロジェクトに含まれる他のすべてのアクティビティは元の言語のままになります。

任意の提案やコメントを歓迎します。

ケムラジ

アプリの言語を変更するためのいくつかの回避策は次のとおりです。

  • ユーザーが変更されたときに一度言語を設定します。次回ユーザーがアプリを起動したときに自動的に言語を変更します。
  • ユーザーの好みの言語を保存して、次回アプリを開いたときに設定できます。

を呼び出さなかったため、これは機能しませんonConfigurationChanged()

これがアプリケーションクラスになります。メソッドを呼び出すことで言語を変更できます。

AppContext.getInstance().changeLanguage("en");
Intent refresh = new Intent(ActLanguage.this, ActLanguage.class);
finish();        
startActivity(refresh);

AppContext.javaクラス

import android.app.Application;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import java.util.Locale;


public class AppContext extends Application {
    public static final String PREFERENCE = "NYPrefsFile";
    public static final String KEY_LANG = "LANG";
    private static AppContext mApp = null;

    @Override
    public void onCreate() {
        super.onCreate();
        mApp = this;
        setLanguage();
        sp = getSharedPreferences(PREFERENCE, 0);
    }

    public synchronized static AppContext getInstance() {
        return mApp;
    }

    public void setLanguage() {
        String lang = getStringData(KEY_LANG);
        changeLanguage(lang);
    }

    public String getCurrentLanguage() {
        if (config == null)
            config = getApplicationContext().getResources().getConfiguration();
        return config.locale.getLanguage();
    }

    Configuration config;

    public void changeLanguage(String lang) {
        if (config == null)
            config = getApplicationContext().getResources().getConfiguration();
        Locale locale = new Locale(lang);
        Locale.setDefault(locale);
        config.locale = locale;
        getApplicationContext().getResources().updateConfiguration(config, getApplicationContext().getResources().getDisplayMetrics());
        setStringData(KEY_LANG, lang);
        onConfigurationChanged(config);
    }


    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }

    private SharedPreferences sp;

    public String getStringData(String pKey) {
        return sp.getString(pKey, "");
    }

    public void setStringData(String pKey, String pData) {
        SharedPreferences.Editor editor = sp.edit();
        editor.putString(pKey, pData);
        editor.apply();
    }
}

AndroidManifest.xml

<application
    android:name=".AppContext"

更新:

バックスタックをクリアしてすべてのアクティビティを新しい言語でロードすることから、ホームアクティビティを開始します。

Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent);
finish(); // call this to finish the current activity

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

アプリケーションを再起動しない限り、パスワードの変更が反映されないのはなぜですか?

分類Dev

WindowStyleを動的に変更してもアプリケーションに影響がないのはなぜですか

分類Dev

VisualVM Profilerがアプリケーションをプロファイルしないのはなぜですか?

分類Dev

Win32アプリケーションが1台のWindows10コンピューターで韓国語の文字を正しく表示するのに、同じバージョンと言語パックの別のコンピューターでは表示しないのはなぜですか?

分類Dev

Android VPNアプリケーションがBIND_VPN_SERVICEを使用しないのはなぜですか?

分類Dev

`at`がGUIアプリケーションを実行しないのはなぜですか?

分類Dev

アプリケーションがアプリケーション終了イベントを取得しないのはなぜですか?

分類Dev

ストアからの変更イベントなしでアプリケーションの状態が更新されるのはなぜですか-flux

分類Dev

/ usr / binで権限が変更されると、一部のアプリケーションが機能しなくなるのはなぜですか?

分類Dev

ワンクリックでアプリケーション全体の言語を変更するにはどうすればよいですか?

分類Dev

XAMPPなぜアプリケーションフォルダのアプリケーション権限を変更する必要があるのですか?

分類Dev

多くのアプリケーションでINSERTキーが機能しないのはなぜですか?

分類Dev

アプリケーションがプリンタのデフォルトオプションを尊重しないのはなぜですか?

分類Dev

アプリケーションがプリンタのデフォルトオプションを尊重しないのはなぜですか?

分類Dev

アプリケーションがプリンタのデフォルトオプションを尊重しないのはなぜですか?

分類Dev

会社がアプリケーション言語としてC ++、C#、またはJavaを使用しているのに、なぜPerl、Python、Rubyを学ぶのですか?

分類Dev

デバイスのAndroidではなく、アプリケーションの現在の言語を取得します

分類Dev

WPF / MVVMアプリケーションでイベントが発生しないのはなぜですか?

分類Dev

動的(リアルタイム)更新が機能しないのはなぜですか?アプリケーションの再起動後にのみ変更が表示されるのはなぜですか?

分類Dev

ノードアプリケーションでこのオブジェクトの名前を変更できないのはなぜですか?

分類Dev

アプリケーションがユーザーの応答を待たないのはなぜですか?

分類Dev

Netbeans 8.2で新しいgrailsアプリケーションを作成できないのはなぜですか?

分類Dev

アプリケーションランチャーでサイズを変更できないのはなぜですか?

分類Dev

アプリケーションランチャーでサイズを変更できないのはなぜですか?

分類Dev

ユーザーの選択によってアプリケーション言語を変更するにはどうすればよいですか?

分類Dev

オフラインWebアプリケーションが機能しないのはなぜですか?

分類Dev

Spring BootアプリケーションでAOPが機能しないのはなぜですか?

分類Dev

アプリケーションの再起動後にBroadcastReceiverが機能しないのはなぜですか?

分類Dev

このangularjsアプリケーションが起動しないのはなぜですか?

Related 関連記事

  1. 1

    アプリケーションを再起動しない限り、パスワードの変更が反映されないのはなぜですか?

  2. 2

    WindowStyleを動的に変更してもアプリケーションに影響がないのはなぜですか

  3. 3

    VisualVM Profilerがアプリケーションをプロファイルしないのはなぜですか?

  4. 4

    Win32アプリケーションが1台のWindows10コンピューターで韓国語の文字を正しく表示するのに、同じバージョンと言語パックの別のコンピューターでは表示しないのはなぜですか?

  5. 5

    Android VPNアプリケーションがBIND_VPN_SERVICEを使用しないのはなぜですか?

  6. 6

    `at`がGUIアプリケーションを実行しないのはなぜですか?

  7. 7

    アプリケーションがアプリケーション終了イベントを取得しないのはなぜですか?

  8. 8

    ストアからの変更イベントなしでアプリケーションの状態が更新されるのはなぜですか-flux

  9. 9

    / usr / binで権限が変更されると、一部のアプリケーションが機能しなくなるのはなぜですか?

  10. 10

    ワンクリックでアプリケーション全体の言語を変更するにはどうすればよいですか?

  11. 11

    XAMPPなぜアプリケーションフォルダのアプリケーション権限を変更する必要があるのですか?

  12. 12

    多くのアプリケーションでINSERTキーが機能しないのはなぜですか?

  13. 13

    アプリケーションがプリンタのデフォルトオプションを尊重しないのはなぜですか?

  14. 14

    アプリケーションがプリンタのデフォルトオプションを尊重しないのはなぜですか?

  15. 15

    アプリケーションがプリンタのデフォルトオプションを尊重しないのはなぜですか?

  16. 16

    会社がアプリケーション言語としてC ++、C#、またはJavaを使用しているのに、なぜPerl、Python、Rubyを学ぶのですか?

  17. 17

    デバイスのAndroidではなく、アプリケーションの現在の言語を取得します

  18. 18

    WPF / MVVMアプリケーションでイベントが発生しないのはなぜですか?

  19. 19

    動的(リアルタイム)更新が機能しないのはなぜですか?アプリケーションの再起動後にのみ変更が表示されるのはなぜですか?

  20. 20

    ノードアプリケーションでこのオブジェクトの名前を変更できないのはなぜですか?

  21. 21

    アプリケーションがユーザーの応答を待たないのはなぜですか?

  22. 22

    Netbeans 8.2で新しいgrailsアプリケーションを作成できないのはなぜですか?

  23. 23

    アプリケーションランチャーでサイズを変更できないのはなぜですか?

  24. 24

    アプリケーションランチャーでサイズを変更できないのはなぜですか?

  25. 25

    ユーザーの選択によってアプリケーション言語を変更するにはどうすればよいですか?

  26. 26

    オフラインWebアプリケーションが機能しないのはなぜですか?

  27. 27

    Spring BootアプリケーションでAOPが機能しないのはなぜですか?

  28. 28

    アプリケーションの再起動後にBroadcastReceiverが機能しないのはなぜですか?

  29. 29

    このangularjsアプリケーションが起動しないのはなぜですか?

ホットタグ

アーカイブ