我想在發生更改語言時執行某些操作。所以我把對活動的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