1

当语言发生变化时,我想做点什么。所以我在 Manifest.xml 中的属性 andorid:configCahnges 语言环境中放置了活动:

        <activity
        android:name=".MainActivity"
        android:configChanges="orientation|keyboardHidden|screenSize|locale"
        android:hardwareAccelerated="true"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>           
        </intent-filter>
    </activity>

但是当我运行我的应用程序并转到设置和更改语言时,方法 onConfigurationchanged 不会在 MainAcitvity 中调用。为什么?android的文档说它应该。我为 API 16 开发。

我发现如果我添加到android:configChangeslayoutDirection 并设置android:minSdkVersion="17"该方法被调用。(我在 4.2.2 上运行应用程序)

但现在我无法将文本刷新为新语言。我试着打电话:

 getResources().updateConfiguration(newConfig, getResources().getDisplayMetrics());

在 onConfigurationChanged 但没有成功。:(

4

2 回答 2

0
        android:configChanges="locale|layoutDirection"

工作于 4.4

于 2016-01-12T08:54:37.863 回答
-1

您必须定义 android:configChanges="layoutDirection|locale" 才能调用 onConfigurationChanged()。

于 2014-12-25T15:59:41.747 回答