2013-04-18 36 views
1

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

。 :(

+0

我想你想改變設備的語言,並根據你想改變的語言來改變你的應用程序的語言。是這樣嗎? – GrIsHu 2013-04-18 07:48:04

+1

'android:configChanges'方法用於管理你的活動,以防止在設備中更改方向,SoftKeyboard是開放等..要改變您的應用程序的區域設置您必須在應用程序的'res/values'文件夾中爲相關語言定義其資源值。 – GrIsHu 2013-04-18 07:52:10

+0

@Grishu我不想從應用程序中更改語言。我想對此作出反應(例如,用戶更改語言) 我想使用android的標準機制進行翻譯,但我不想在用戶更改語言時使用onDestroy()。 – LunaVulpo 2013-04-18 09:46:14

回答

0

你必須定義的android:configChanges = 「的layoutDirection |區域設置」,以便onConfigurationChanged()被調用

0
 android:configChanges="locale|layoutDirection" 

工作4.4

相關問題