我想在发生更改语言时执行某些操作。所以我把对活动的Manifest.xml在属性的Andorid:configCahnges区域:为什么没有为android:configChanges =“locale”调用onConfigurationchanged?
<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:configChanges
添加到layoutDirection并设置android:minSdkVersion="17"
该方法被调用。 (我在4.2.2上运行应用程序)
但现在我无法将文本刷新为新语言。 我尝试拨打:
getResources().updateConfiguration(newConfig, getResources().getDisplayMetrics());
在onConfigurationChanged但没有成功
。 :(
我想你想改变设备的语言,并根据你想改变的语言来改变你的应用程序的语言。是这样吗? – GrIsHu 2013-04-18 07:48:04
'android:configChanges'方法用于管理你的活动,以防止在设备中更改方向,SoftKeyboard是开放等..要改变您的应用程序的区域设置您必须在应用程序的'res/values'文件夹中为相关语言定义其资源值。 – GrIsHu 2013-04-18 07:52:10
@Grishu我不想从应用程序中更改语言。我想对此作出反应(例如,用户更改语言) 我想使用android的标准机制进行翻译,但我不想在用户更改语言时使用onDestroy()。 – LunaVulpo 2013-04-18 09:46:14