我有这个设置部分,我允许用户更改应用程序中显示的语言。当用户选择不同的语言时,活动被重新加载,以便可以应用语言的改变。但问题是,当用户在改变语言后点击右键时,后台活动中显示的语言仍然是相同的。 所以我的问题是,当我回到背景上的某些活动时,应该如何应用语言更改?我想我应该做些什么来检测onResume
方法的变化,但我不确定它是什么。如果您有任何建议,请让我知道。 谢谢。Android - 点击后改变语言
回答
经过多次尝试,我找到了解决我的问题。在我onCreate
方法,我得到一个包含当前语言的价值SharedPreferences
,并获得当前的语言:
SharedPrefrences languagepref = getSharedPreferences("language",MODE_PRIVATE);
String language = languagepref.getString("languageToLoad", Locale.getDefault().getDisplayLanguage());
然后,在我的onResume
方法,我提到变量language
在上面的值赋给一个本地变量,并更新language
的值。然后,我比较这两个变量 - 如果它们是不同的,我会破坏当前活动并启动另一:
@Override
public void onResume(){
super.onResume();
String oldLanguage = language;
language = languagepref.getString("languageToLoad", Locale.getDefault().getDisplayLanguage());
if (!oldLanguage.equals(language)){
finish();
startActivity(getIntent());
}
}
瞧,那没有的伎俩!
我会建议使用SharedPreferences。您可以在其中存储一个包含相关值的lang键,并在必要时进行更新。在您的onResume()方法中,您可以获取lang值,然后根据存储的值填充视图。
SharedPreferences sharedPreferences;
sharedPreferences = this.getSharedPreferences("MyActivity", Activity.MODE_PRIVATE);
String lang = sharedPreferences.getString("lang", "en-GB");
SharedPreferences.Editor editor;
editor = sharedPreferences.edit();
editor.putString("lang", "en-US").commit();
这是您需要进行的基础知识。
谢谢,我尽量按照您告诉我的方式尝试,但语言仍然没有“不会改变背景活动。 –
你在哪里创建你的观点并设置他们的文本? –
您是否尝试在更改完成后重新启动活动?
你可以简单地使用
finish();
startActivity(getIntent());
刷新只要检测偏好变化的活动。
我假设你的意思是刷新'onResume'中的活动?那么我试过了,由于整理和开始的无限循环,活动很难开始。 –
除非你有任何保存的变量,你可以使用'onCreate(null);'。这应该也会重新启动您的活动。 – Traxex1909
- 1. 语言改变对第二点击
- 2. 改变语言
- 3. 单击按钮更改语言:Android
- 4. 按钮点击时改变文化(语言)
- 5. 更改应用程序语言在android中的按钮点击
- 6. localizerouter不改变语言后发布
- 7. 旋转后的Android语言更改
- 8. 运行系统语言改变的Android
- 9. Android改变语言配置布局
- 10. Android更改语言
- 11. Android - 更改语言环境(语言)
- 12. 改变点击
- 13. 如何改变语言笨
- 14. 笨改变语言form_validation_lang
- 15. 用java改变语言
- 16. Django i18n不改变语言
- 17. Magento不改变语言
- 18. 语言不会改变
- 19. 如何改变语言
- 20. Vaadin改变按钮样式后,点击
- 21. Google地图。点击后改变风格
- 22. NSSwitchCell在点击后不改变值
- 23. input [type =“submit”] - 点击后改变背景
- 24. python button点击后改变文字
- 25. 更改Android语言监听
- 26. android更改语言日期
- 27. Android - 动态更改语言
- 28. Android:更改语言依据
- 29. 防止语言环境更改后的应用语言更改
- 30. ANDROID:点击按钮改变TextView
在ActivityDestination中监听** onResume **方法或在ActivitySource中监听** onBackPressed **。 – 2013-07-22 09:26:58
如果您使用完成()返回上一个活动 尝试使用意图,而不是使用新语言刷新以前的活动 – user1283633