2015-09-26 82 views
0

我有英文文件夾中的strings.xml文件夾以及西班牙文中另一個string.xml文件夾中的values-es文件夾。我有一個從操作欄打開的片段來設置設置並將它們存儲在SharedPreferences中,這在英語中工作正常。我有很多如果在應用程序中檢查共享首選項上設置了什麼,但用英語單詞,現在在西班牙語strings.xml中我想要做這樣的事情,以避免更改應用程序中的所有ifs。我試過這個,但它不起作用:英文/西班牙文App:如何在西班牙語中設置values-es/strings中的顯示值,但在應用中保留ifs檢查的英文值?

<string-array name="music"> 
     <item value="Yes">Si</item> 
     <item value="No">No</item> 
    </string-array> 

有什麼辦法可以做類似的事嗎?基本上我想讓用戶在首選項微調器上選擇「Si」,但是當我從微調器中獲得數值時,我想讓它檢索「是」

回答

1

您應該使用常量來表示您需要保存在共享首選項中的值,這樣它將獨立於語言。

例如,如果你有2個單選按鈕音樂命名和關閉你應該創建2個常數

public static final int ON = 1; 
public static final int OFF = 0; 

現在單選按鈕,你應該檢查單選按鈕的ID和共享節省適當的常量的點擊偏好:

case: R.id.radio_on 
//save ON in shared preferences 
break; 
case: R.id.radio_off 
    //save OFF in shared preferences 
    break; 

然後,您可以檢查獨立於任何語言的常量。

+0

這樣做...感謝我的朋友 – JAF

1

基本上,我希望用戶選擇「SI」的喜好微調器 但是當我從微調框中的值我希望它檢索「是「

如果您顯示的是val在Splanish中的用戶名和特定部分的代碼可能是您要查找的方式。

Resources res = getResources(); 
Configuration conf = res.getConfiguration(); 
Locale savedLocale = conf.locale; // Save your current locale first (Splanish in your case) 
conf.locale = new Locale("es"); // Change the desired locale(English in your case) 
res.updateConfiguration(conf, null); 

// retrieve resources from desired locale 
String str = res.getString(id); 

// restore original locale 
conf.locale = savedLocale; 
res.updateConfiguration(conf, null); 

我希望這會有所幫助。

相關問題