android - 在运行时更改 7.0 以上设备的语言问题
问题描述
我有一个与此非常相似的问题:更新到 androidx.appcompat:appcompat:1.1.0 后的语言更改问题,除了它对 Api 24 及以下版本非常有用,但它根本不适用于 Api 26及以上(无法测试 Api 25)。
Gradle 依赖项
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.0.2' //DO NOT UPGRADE - Translation issue
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
testImplementation 'androidx.test.espresso:espresso-core:3.2.0'
testImplementation 'androidx.test:core:1.2.0'
testImplementation 'androidx.test.ext:junit:1.1.1'
implementation 'com.google.android.material:material:1.0.0'
implementation fileTree(include: ['*.jar'], dir: 'libs')
}
单击按钮时触发的代码
/**
* Select language application
*/
public static void defineLanguage(ImageButton button, final String value, final Activity activity, final Activity source) {
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Locale locale = new Locale(value);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
activity.getApplicationContext().getResources().updateConfiguration(config,
activity.getBaseContext().getResources().getDisplayMetrics());
Intent intent = new Intent(activity, source.getClass());
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
activity.finish();
activity.startActivity(intent);
}
});
}
我是否也应该等待 Google 的修复,还是我的问题略有不同?
解决方案
推荐阅读
- ios - 如何从字典中删除指定键的一对?
- javascript - 值在 JavaScript 表达式中的哪一侧有关系吗?
- javascript - SVG 上不会触发 jQuery 点击
但是在子元素上 - c# - 如何将日期从一种文化转换为另一种文化?
- sql-server - MS SQL.将行转换为列
- c# - 如何在 C#(.net 核心)中将我的对象数组转换为 JSON 对象
- jenkins-pipeline - 我可以跳过不同工作流水线中的同一阶段吗?
- sql - 最小的 Sales_Order_Date
- html - 如何修复布局,保持向右对齐
- python - 在对象上使用 dir() 后,我只从对象中获取一些有效属性列表,其余的显示为 [...]