在Android应用中更改区域设置不会更改活动标签

时间:2015-08-24 12:25:11

标签: android android-activity menu label locale

我用两种语言开发应用程序。用户通过在菜单中选择他们想要的语言来改变语言环境。这有效,一切都可以翻译,但活动标签。我尝试了在互联网上找到的所有方法,但似乎没有任何效果。

这是我的onOptionsItemSelected代码

public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();


    if (id == R.id.france) {
        Locale mLocale = new Locale("fr");
        Locale.setDefault(mLocale);
        Configuration config = getBaseContext().getResources().getConfiguration();
        if (!config.locale.equals(mLocale)) {
            config.locale = mLocale;
            getBaseContext().getResources().updateConfiguration(config, null);
        }
        finish();
        Intent getOneIntent = new Intent(this, OneActivity.class);
        startActivity(getOneIntent);
    } else if(id==R.id.english){
        Locale mLocale = new Locale("en");
        Locale.setDefault(mLocale);
        Configuration config = getBaseContext().getResources().getConfiguration();
        if (!config.locale.equals(mLocale)) {
            config.locale = mLocale;
            getBaseContext().getResources().updateConfiguration(config, null);
        }

        finish();
        Intent getOneIntent= new Intent(this, OneActivity.class);
        startActivity(getOneIntent);

    }


    return super.onOptionsItemSelected(item);
}

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题。在更改Locale语言后,我可以使用setTitle(getResources.getString(R.string.my_title))“修复”此问题。如果您实现Fragment,我应该用getActivity().setTitle()调用它。另外,我用下一个方法清理任务:

public static void appRestart(Activity activity) { Intent i = new Intent(activity.getBaseContext(), MyClass.class); i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); activity.startActivity(i); }

我希望它有所帮助...