言語変更が発生したら何とかしたい。そのため、属性 andorid:configCahnges ロケールの 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>
しかし、アプリを実行して言語の設定と変更に移動すると、メソッド onConfigurationchanged は MainAcitvity で呼び出されません。なんで?Android用のドキュメントはそうすべきだと言っています。API 16 向けに開発しています。
add をandroid:configChanges
layoutDirection に追加して設定android:minSdkVersion="17"
すると、メソッドが呼び出されることがわかりました。(私は4.2.2でアプリを実行しています)
しかし今、テキストを新しい言語に更新できませんでした。私は電話しようとします:
getResources().updateConfiguration(newConfig, getResources().getDisplayMetrics());
onConfigurationChanged にありますが、成功しません。:(