2012-05-10 58 views
14

下面的字符串數組是,我做了檢索字符串數組項目代碼:的Android - 檢索資源

String[] menuArray; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{  
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ScrollView sv = new ScrollView(this); 
    LinearLayout ll = new LinearLayout(this); 
    ll.setOrientation(LinearLayout.VERTICAL); 
    sv.addView(ll); 

// Create an ArrayAdapter that will contain all list items 
    ArrayAdapter<String> adapter; 

    menuArray = getResources().getStringArray(R.array.menu); 


    for(int i = 0; i < menuArray.length; i++) 
    { 
     Button b = new Button(this); 
     b.setText(menuArray[i]); 
     ll.addView(b); 
    } 

    this.setContentView(sv); 
} 

這是strings.xml檔案:

<string-array name="menu"> 
     <item>1</item> 
     <item>2</item> 
     <item>3</item> 
     </string-array> 

然而,R.array.menu有此問題進行編譯: 從ADT 14開始,資源字段不能用作開關情況。 調用此修復程序以獲取更多信息。

+0

是啊,我可以爲您提供從快照仿真器如果你想看。我只是跳過使用變量** x **以及try catch塊,因爲沒有提供** count()**的定義。 –

+0

您是否正在使用具有資源ID的交換機?檢查[這](http://stackoverflow.com/questions/8387777/what-is-migrate-android-code) –

+0

我解決它..這只是因爲我搬出了從strings.xml的app_name LOL –

回答

4
for(int i = 0;i<menuArray.length; i++) 
{ 
    Button b = new Button(this); 
    b.setText(menuArray[i]); 
    ll.addView(b); 
} 

刪除下面的語句

try { 
     x = count(); 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

,並試圖給佈局的高度和寬度都佈局..

+0

我已經更新了上面的代碼。但是對R.array.menu仍然有同樣的問題。 –

+0

採取單獨arrays.xml並採取字符串數組噸<?XML版本= 「1.0」 編碼= 「UTF-8」?> <陣列名稱= 「testArray」> 第一秒 第三 第四 第五 這裏 – c2dm

5

如何從資源的字符串數組:

陣列.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

    <string-array name="my_string_array"> 
     <item>one</item> 
     <item>two</item> 
     <item>three</item> 
    </string-array> 

</resources> 

代碼

String[] stringArray = getResources().getStringArray(R.array.my_string_array); 

(該OP已經有了回答他們的問題,但基於問題的標題,其他的人來這裏尋找這個答案。)