TabActivity不会改变语言

时间:2011-09-18 21:07:01

标签: android

我有问题。 我有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以获取刷新文本

1 个答案:

答案 0 :(得分:0)

您是否正确保存对SharedPreferences对象的更改?您提供的代码不会显示您使用SharedPreferences.Editor保存更改。

编辑:确保您在偏好活动中保存的偏好文件与您在标签活动(preferences = getSharedPreferences(Constans.PREF, Activity.MODE_PRIVATE);)中打开的偏好文件相同。如果您的选项卡活动未找到您确定已保存在首选项活动中的首选项,则表明您的保存代码未被调用(使用断点或日志语句进行验证),或者您保存到错误的文件中。