我有问题。 我有TabActivity和intent标签。 在我的应用中,用户可以在首选项设置中更改语言 当用户更改语言和应用程序时,请返回我的TabActivity:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1:
finish();
startActivity(getIntent());
break;
default:
break;
}
}
此代码运行完美,因为所有文本都是更改的语言。
当我重新启动应用程序时出现问题。某些文本的语言不正确(系统默认)。当我再次打开首选项屏幕并返回到我的TabActivity时,文本都被翻译了。
如何在重启应用程序后翻译所有文本? 为什么当我第一次运行应用程序时并非所有文本都使用适当的语言?
对不起我的英语,我希望你明白我的意思并帮助我。谢谢。
这是保存时来自preferenceActivity的代码:
String lang = preferences.getString("Language", "");
Configuration config = new Configuration();
if (!TextUtils.isEmpty(lang))
config.locale = new Locale(lang);
else
config.locale = Locale.getDefault();
Locale.setDefault(new Locale(lang));
getBaseContext().getResources().updateConfiguration(config, null);
tabActivity:
public class PlanActivity extends TabActivity {
SharedPreferences preferences;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle(R.string.app_name);
preferences = getSharedPreferences(Constans.PREF, Activity.MODE_PRIVATE);
edytor = preferences.edit();
String lang = preferences.getString("Language", "en");
Configuration config = new Configuration();
if (!TextUtils.isEmpty(lang))
config.locale = new Locale(lang);
else
config.locale = Locale.getDefault();
Locale.setDefault(new Locale(lang));
getBaseContext().getResources().updateConfiguration(config, null);
setContentView(R.layout.main);
TabHost tabHost = getTabHost();
......... more
此代码无法正常运行。我必须转到设置并返回tabActivity以获取刷新文本
答案 0 :(得分:0)
您是否正确保存对SharedPreferences
对象的更改?您提供的代码不会显示您使用SharedPreferences.Editor保存更改。
编辑:确保您在偏好活动中保存的偏好文件与您在标签活动(preferences = getSharedPreferences(Constans.PREF, Activity.MODE_PRIVATE);
)中打开的偏好文件相同。如果您的选项卡活动未找到您确定已保存在首选项活动中的首选项,则表明您的保存代码未被调用(使用断点或日志语句进行验证),或者您保存到错误的文件中。