以编程方式更改应用程序资源语言后,SlidingTabLayout的选项卡语言不会更改

问题描述 投票:0回答:1

我正在尝试为预构建的Android应用程序添加一些功能,其中一个是以编程方式更改应用程序语言。

我正在做的更改应用程序资源的方法是:在onCreate中为每个活动执行以下代码:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Resources res = getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        android.content.res.Configuration conf  = res.getConfiguration();
        conf.setLocale(new Locale(Utils.getAppPreferences("LANG")));
        res.updateConfiguration(conf, dm);
    }

// static member functions to return the sharedpreference that holds app's current language
public static String getDeviceLanguage() {

    return Locale.getDefault().getLanguage();
}


public static String getAppPreferences(String key) {
    SharedPreferences sharedpreferences = AppController.getInstance().getSharedPreferences("AppPreferences", 0);
    return sharedpreferences.getString(key, Locale.getDefault().getLanguage());
}

 // and after all of this I am restarting MainActivity 
  Intent intent = new Intent(this.getApplicationContext(), MainActivity.class);
    startActivity(intent);

我需要在阿拉伯语“ar”和英语“en”之间切换。翻译已经可用于资源中的所有语言。除了仅使用设备语言的TabBarLayout选项卡外,所有资源都在更改。

java android localization android-tabs
1个回答
0
投票

在设置内容视图之前必须设置语言。如果不可能,则通过新意图重新启动活动并完成旧活动。

© www.soinside.com 2019 - 2024. All rights reserved.