Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
改变android应用程序语言_Android - Fatal编程技术网

改变android应用程序语言

改变android应用程序语言,android,Android,在我的应用程序中,我有一个特殊的菜单,可以在其中更改应用程序语言。我可以从项目API(通过解析JSON)和项目值xml获得标签。我可以在不重新启动应用程序和系统语言的情况下更改安卓应用程序语言 您可以使用切换按钮更改语言,并在应用程序中以编程方式设置所选语言,而无需关闭应用程序 1.您将检查选择哪种语言 String prefsToogleStr = getSharePrefrenceLocale(); Log.d("tag", "CtrlDashBoard prefsToogl

在我的应用程序中,我有一个特殊的菜单,可以在其中更改应用程序语言。我可以从项目API(通过解析JSON)和项目值xml获得标签。我可以在不重新启动应用程序和系统语言的情况下更改安卓应用程序语言

您可以使用切换按钮更改语言,并在应用程序中以编程方式设置所选语言,而无需关闭应用程序

1.您将检查选择哪种语言

String prefsToogleStr = getSharePrefrenceLocale();
        Log.d("tag", "CtrlDashBoard prefsToogleStr" + prefsToogleStr);
        if (prefsToogleStr.equalsIgnoreCase("en")) {
            toggleLocaleButton.setChecked(true);
            CommonMethod.setLocale("en", viewDashBoard);
        } else {
            CommonMethod.setLocale("ur", viewDashBoard);
            toggleLocaleButton.setChecked(false);
        }
////////////////////////////////////////

public String getSharePrefrenceLocale() {

        SharedPreferences prefs = viewDashBoard.getSharedPreferences(
                viewDashBoard.getPackageName(), ViewDashBoard.MODE_PRIVATE);

        return prefs.getString("locale", "en");
    }
public void setSharePrefrenceLocale(String locale) {
        SharedPreferences prefs = viewDashBoard.getSharedPreferences(
                viewDashBoard.getPackageName(), ViewDashBoard.MODE_PRIVATE);
        Editor editor = prefs.edit();
        editor.putString("locale", locale);
        editor.commit();
    }
2.在切换按钮中更改语言检查更改侦听器:

// Locale Toogle
        toggleLocaleButton
                .setOnCheckedChangeListener(new OnCheckedChangeListener() {

                    @Override
                    public void onCheckedChanged(CompoundButton buttonView,
                            boolean isChecked) {
                        if (buttonView.isChecked()) {
                            setSharePrefrenceLocale("en");
                            CommonMethod.setLocale("en", viewDashBoard);
                        } else {

                            setSharePrefrenceLocale("ur");
                            CommonMethod.setLocale("ur", viewDashBoard);

                        }
                        dialog.dismiss();
                    }
                });

    }
/////////////////////////////////////

public String getSharePrefrenceLocale() {

        SharedPreferences prefs = viewDashBoard.getSharedPreferences(
                viewDashBoard.getPackageName(), ViewDashBoard.MODE_PRIVATE);

        return prefs.getString("locale", "en");
    }
public void setSharePrefrenceLocale(String locale) {
        SharedPreferences prefs = viewDashBoard.getSharedPreferences(
                viewDashBoard.getPackageName(), ViewDashBoard.MODE_PRIVATE);
        Editor editor = prefs.edit();
        editor.putString("locale", locale);
        editor.commit();
    }
//////////////////////////////////////

public String getSharePrefrenceLocale() {

        SharedPreferences prefs = viewDashBoard.getSharedPreferences(
                viewDashBoard.getPackageName(), ViewDashBoard.MODE_PRIVATE);

        return prefs.getString("locale", "en");
    }
public void setSharePrefrenceLocale(String locale) {
        SharedPreferences prefs = viewDashBoard.getSharedPreferences(
                viewDashBoard.getPackageName(), ViewDashBoard.MODE_PRIVATE);
        Editor editor = prefs.edit();
        editor.putString("locale", locale);
        editor.commit();
    }
主要方法:调用

public static void setLocale(String localeName, Context context) {
    Locale locale = new Locale(localeName);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    context.getResources().updateConfiguration(config,
            context.getResources().getDisplayMetrics());
}

希望您理解。这对您很有用。

插入此方法并调用它以更改语言

private void setLocale (String localeCode , Bundle b ){
    Log.d(TAG+"set location function: "+localeCode);
    locale = new Locale(localeCode);
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    getApplicationContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    UserDetail.this.getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    onCreate(null);
}
在切换更改或任何选择调用值时,如下所示:

setLocale("en-us",savedInstanceStat); // for english
setLocale("ar",savedInstanceStat); // for arabic

OnCreate(null)
将导致异常。您需要调用
重新创建()
;嘿,谢谢分享,但即使重新启动应用程序,它也没有任何作用