我有问题。我有带有意图标签的TabActivity。在我的应用程序中,用户可以更改首选项设置中的语言。当用户更改语言和应用程序时,返回到我的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以刷新文本
发布于 2011-09-19 05:20:05
您是否正确地保存了对SharedPreferences对象的更改?您提供的代码没有显示您使用SharedPreferences.Editor来保存更改。
编辑:确保您在首选项活动中保存到的首选项文件与在选项卡活动(preferences = getSharedPreferences(Constans.PREF, Activity.MODE_PRIVATE);)中打开的文件相同。如果您的选项卡活动没有找到您确信保存在preferences活动中的preferences,则您的保存代码没有被调用(使用断点或日志语句进行验证),或者您保存到了错误的文件中。
https://stackoverflow.com/questions/7464487
复制相似问题