我通过这种方法根据用户的选择来强制使用我的android应用程序上使用的语言
public static void setLanguage(MySharedPreferences mySharedPreferences, Context context) {
mySharedPreferences = MySharedPreferences.getInstance(context);
Locale locale = new Locale(mySharedPreferences.getLanguageKey());
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
context.getResources().updateConfiguration(config,
context.getResources().getDisplayMetrics());
}
在整个应用程序中都能正常运行,但是在一个活动中,我遇到了一个问题,即当方向改变时,它会读取字符串值语言,具体取决于系统语言而不是应用程序语言,并且如果我将活动设置为类似清单
<activity
android:name=".ProductDetailsActivity"
android:exported="false"
android:configChanges="orientation|screenSize"
android:label="@string/product_confirm_page" />
<activity
但这不是我要寻找的解决方案,因为无论方向如何变化,它都会呈现当前的布局设计,而不是针对我制作的每个方向都呈现自定义设计。
当我删除android:configChanges="orientation|screenSize"
时
从清单中的活动标签中尝试使用方法 onConfigurationChanged 处理更改,该方法未针对方向更改和语言支持问题调用。