2015-11-27 35 views
0

我想了解R.java和Android中的本地化的內部工作原理。我知道這些字符串是編譯時間資源並由apt生成。我有幾個關於R.java的問題。瞭解R.java和Android中的本地化

1.如果我打開R.java生成的文件,我可以看到

public final class R { 
public static final class string { 
    public static final int HelloMessage=0x7f05000f; 
} 

爲什麼R.String.HelloMessage是int.And如果它是靜態的最終本地化版本如何與INT爲相同我看不到任何本地化版本的變量。

2.如何切換到語言環境發生。有人指向我的android源代碼。我瀏覽了android.content.res.AssetManager,com.android .settings.LocalePicker.java的代碼,但我不是當然,R.Java正在加載本地化的字符串。

由於

回答

1

Android是檢索所述裝置的區域設置和隨後選擇從正確的文件夾的字符串。它可以這樣做,因爲本地化的字符串位於具有特定命名約定的文件夾中。 相同字符串的ID在每個不同的文件夾中都是一樣的......它只需根據設備的區域設置在正確的文件夾中選擇它,如我所說...

單程怎麼樣這樣做是在另一個SO線程中解釋:Android get device locale

+0

感謝您的答覆。但我想了解更多有關Android是如何實現這一點。我正在挖掘Android的源代碼爲this.But我無法在Resources.updateConfiguration()和AssetManager.setConfiguration()後追蹤它 – Crypt