为什么没有为android调用onConfigurationchanged:configChanges =" locale"?

时间:2013-04-18 07:13:09

标签: android android-manifest local

我希望在更改语言出现时执行某些操作。所以我在属性andorid:configCahnges locale:

中的Manifest.xml中放置了活动
        <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>

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

我发现如果我将添加到android:configChanges layoutDirection并设置android:minSdkVersion="17",则调用该方法。 (我在4.2.2上运行app)

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

 getResources().updateConfiguration(newConfig, getResources().getDisplayMetrics());
在onConfigurationChanged中

但没有成功。 :(

2 个答案:

答案 0 :(得分:0)

        android:configChanges="locale|layoutDirection"

工作在4.4

答案 1 :(得分:-1)

你必须定义android:configChanges =“layoutDirection | locale”才能调用onConfigurationChanged()。