如何强制Android应用程序重新加载与语言更改相对应的活动标题?

时间:2013-12-22 04:52:16

标签: android android-manifest multilingual android-titlebar

当应用程序的语言发生变化时,如何强制android应用程序重新加载活动标题?为了您的信息,应用程序仅在旋转设备时重新加载标题。然而,活动的内容是使用适当的语言内容重新加载,没有问题,但活动标题!

在AndroidManifest.xml文件中,添加了android:configChanges =“locale”但没有成功。

<activity
    android:name=".layout.MainActivity"
    android:configChanges="locale"
    android:label="@string/app_name" />

即使重写onConfigurationChanged事件也不起作用,

@Override
public void onConfigurationChanged(Configuration newConfig) {
    // refresh your views here
    super.onConfigurationChanged(newConfig);

    this.setTitle(getResources().getString(R.string.app_name));
}

谢谢,

2 个答案:

答案 0 :(得分:9)

同样的问题,通过在Activity onCreate方法中强制ActionBar标签重新加载来解决:

    PackageManager pm = getPackageManager();
        try {
            ActivityInfo ai = pm.getActivityInfo(this.getComponentName(), PackageManager.GET_ACTIVITIES|PackageManager.GET_META_DATA);
            if (ai.labelRes != 0) {
                getSupportActionBar().setTitle(ai.labelRes);
            }
        } catch (PackageManager.NameNotFoundException e) {
            e.stacktrace();
        }

答案 1 :(得分:1)

您需要在应用中添加标题的翻译,然后应用会根据用户设备语言自动更改您的标题...以下是如何向您的应用添加语言文件夹How to pragmatically switch between different language string resource folders in android?