1. 程式人生 > >安卓切換語言後activity重啟 解決方法 以及configChanges屬性

安卓切換語言後activity重啟 解決方法 以及configChanges屬性

卡了蠻久,試了很多方法,最後發現只要在AndroidManifest.xml中配置configChanges屬性就OK

 android:configChanges="locale|layoutDirection"

只要加上這條屬性,切換語言時activity就不會重啟

有的時候解決問題的辦法很簡單,就看你願不願意花時間去琢磨了

最後總結一下configChanges的各種屬性:

android:configChanges=["mcc", "mnc", "locale","touchscreen", "keyboard", "keyboardHidden","navigation", "screenLayout", "fontScale", "uiMode",
"orientation", "screenSize", "smallestScreenSize"]

mcc:The IMSI mobile country code (MCC) has changed — a SIM has been detected and updated the MCC.IMSI(國際移動使用者識別碼)發生改變,檢測到SIM卡,或者更新MCC
mnc:The IMSI mobile network code (MNC) has changed — a SIM has been detected and updated the MNC.
IMSI網路發生改變,檢測到SIM卡,或者更新MCC


其中mcc和mnc理論上不可能發生變化
locale:The locale has changed — the user has selected a new language that text should be displayed in.
語言發生改變,使用者選擇了一個新的語言,文字應該重新顯示
touchscreen:The touchscreen has changed. (This should never normally happen.)
觸控式螢幕發生改變,這通常是不應該發生的
keyboard:The keyboard type has changed — for example, the user has plugged in an external keyboard.

鍵盤型別發生改變,例如,使用者使用了外部鍵盤
keyboardHidden:The keyboard accessibility has changed — for example, the user has revealed the hardware keyboard.
鍵盤發生改變,例如,使用者使用了硬體鍵盤
navigation:The navigation type (trackball/dpad) has changed. (This should never normally happen.)
導航發生改變,(這通常不應該發生) 舉例:連線藍芽鍵盤,連線後確實導致了navigation的型別發生變化。因為連線藍芽鍵盤後,我可以使用方向鍵來navigate了
screenLayout:The screen layout has changed — this might be caused by a different display being activated.
螢幕的佈局發生改變,這可能導致啟用不同的顯示
fontScale:The font scaling factor has changed — the user has selected a new global font size.
全域性字型大小縮放發生改變
orientation:The screen orientation has changed — that is, the user has rotated the device.裝置旋轉,橫向顯示和豎向顯示模式切換。
screenSize: 螢幕大小改變了
smallestScreenSize: 螢幕的物理大小改變了,如:連線到一個外部的螢幕上
4.2增加了一個layoutDirection屬性,當改變語言設定後,該屬性也會成newConfig中的一個mask位。所以ActivityManagerService(實際在ActivityStack)在決定是否重啟Activity的時候總是判斷為重啟。
需要在android:configChanges 中同時新增locale和layoutDirection。
在不退出應用的情況下切換到Settings裡切換語言,發現該Activity還是重啟了。


相關推薦

切換語言activity 解決方法 以及configChanges屬性

卡了蠻久,試了很多方法,最後發現只要在AndroidManifest.xml中配置configChanges屬性就OK  android:configChanges="locale|layoutDirection" 只要加上這條屬性,切換語言時activity就不會重啟 有

Android 切換系統語言App

問題描述:App->改變系統語言->重進App後,最近的Activity會走onCreate()方法,然後App被殺掉;直到第二次進入App後,App會重啟 解決方案:App->改變系統語言->重進App後,最近的Activity走到onCreate

點選home鍵

主要原因是:每次啟動Intent導致新建立Task的時候,該Task會記錄導致其建立的Intent;而如果後續需要有一個新的與建立Intent完全一致(完全一致定位為:啟動類,action、category等等全部一樣,不可多項也不可缺少),那麼該Intent並不會觸發Activity的新建啟動,而只會將已經

配置變更導致Activity——Fragment儲存以及Activity做法

一.在Fragment中儲存Activity的資料(在配置變更導致Activity重啟情況下)        在關閉Activity的時候,你希望能把頁面上的資料儲存下來,很多人第一反應一定是onSaveInstanceState()這個方法。對,一般情況

Win7資源管理器更新不斷解決方案

在更新後可能會出現explore自己down掉。 問題簽名: 問題事件名稱: BEX 應用程式名: explorer.exe 應用程式版本: 6.1.7600.16450 應用程式時間戳: 4aeba271 故障模組名稱: fxsst.dll_unloa

Android Service被關閉自動,解決被異常kill 服務

Android開發的過程中,每次呼叫startService(Intent)的時候,都會呼叫該Service物件的onStartCommand(Intent,int,int)方法,然後在onStartCommand方法中做一些處理。然後我們注意到這個函式有一個int的返回值,

開發中Theme.AppCompat.Light的解決方法

col san 文件 輸入 安卓 light style match ont styles.xml中<style name="AppBaseTheme" parent="Theme.AppCompat.Light">提示如下錯誤,這是版本問題。 error: E

BitmapFactory.decodeStream()返回null的問題解決方法

今天遇到了一個問題,最終解決,記錄下解決方案: 問題:從網路獲取圖片,資料為InputStream流物件,然後呼叫BitmapFactory的decodeStream()方法解碼獲取圖片,返回null。 --------------------------------

Windows 7藍屏解決方法,啟用工具沒用!附下載!

很多人反映近期尤其是從3月1日起,Windows 7系統頻繁出現藍屏重啟現象!究其原因是因為使用了測試版的作業系統。 Windows 7正式版的版本為:6.1.7600.16385,並非所有的6.1.7600版全部都是正式版!檢視詳細版本資訊的方式是:點選開始,在搜尋程

開發騰訊X5遇到IllegalArgumentException解決方法

在我的開發中突然遇到了一個問題如下圖,查了好久才發現是問題的來源是WebView中包含一個ZoomButtonsController,當使用web.getSettings().setBuiltInZoomControls(true);啟用後,使用者一旦觸控式螢幕

觀察者模式實際應用:監聽線程,意外退出線程自動

lee text 實時 之間 最終 ren tap instance and 摘要:  觀察者模式,定義對象之間的一種一對多的依賴關系,當對象的狀態發生改變時,所有依賴於它的對象都得到通知並且被自動更新。觀察者模式在JDK中有現成的實現,java.util.Obsera

CentOS kernel panic自動

崩潰 導致 服務器 ger 收集 信息 正常 自動重啟 entos   這段時間公司有幾臺老化的服務器老是莫名其妙宕機,最後查看日誌都是一些類似“I/O error”的錯誤導致的kernel panic。由於這幾臺機器跑的也不是什麽重要的業務,為了省事想幹脆把內核設置為內核

Node.js熱部署代碼,實現修改代碼自動服務方便實時調試

iso 用戶 使用方法 了解 super 幫助 應用 https js文件 寫PHP等腳本語言的時候,已經習慣了修改完代碼直接打開瀏覽器去查看最新的效果。而Node.js 只有在第一次引用時才會去解析腳本文件,以後都會直接訪問內存,避免重復載入,這種設計雖然有利於提高性能,

centos7 更改網絡 無法network (解決辦法)

entos 解決辦法 ima urn rest 網關 /etc tar 網卡名 今天由於用nat與本地局域網沖突,可能和之前ENSP搭建時虛擬機沖突造成 然後修改了VMnet8的ip,網關,DNS 同時更改虛擬網絡編譯器與VMnet8保持相同 進入虛擬機,更改/etc/sy

spring boot在Eclipse中,修改代碼無需就生效的配置

maven java eclipse <build> <finalName>my-spring-boot</finalName> <!-- 指定package生成的文件名為my-spring-boot.jar --> <

php安裝擴展模塊不生效的原因及解決辦法

... star nmp har 成功 config ces .... conf 在lnmp運維環境中,我們經常會碰到有些php依賴的擴展模塊沒有安裝,這就需要後續添加這些擴展模塊。在擴展被安裝配置後,往往會發現php-fpm服務重啟後,這些擴展並沒有真正加載進去!下面

四大元件之Activity學習

在安卓中各大控制元件都要依附Activity來完成與使用者的互動,Activity(活動)作為控制元件的平臺。介面的實現都要用到Activity,簡單的說Activity就是安卓的UI部分。 Activity的生命週期 一個Activity的建立與銷燬要經歷一下幾個方法: onCreat

獲取當前的Activity即CurrentActivity

安卓獲取當前的Activity即CurrentActivity有兩種方法: 1. 在BaseActivity中 宣告一個 :private static volatile Activity mCurrentActivity; public static Activity getCurre

Android Crash處理 崩潰禁止預設與崩潰手動

轉載自:https://juejin.im/post/5a321db5f265da431b6d38ff 伸手黨福利:compile 'com.tuzhenlei:crashhandler:1.0.1' 詳情參見文件和demo:github地址 /**簡單初始化*/ //Cr

監控伺服器程式,掛掉自動

1、定時呼叫ps,檢查程式是否活著。如果不在了就啟動程式 #!/bin/bash name=$1 while true do         c=`ps -x | grep $name | grep -v grep