2013-02-15 76 views
0

我創建一個簡單的測驗應用程序中的特定字符串,可以使用array.xml 的資源(無外部解析器,無適配器)如何從array.xml

<string-array name="Question1"> 
     <item name="Question">This is Question1</item> 
     <item name="Answer">option1</item> 
     <item name="option1">option2</item> 
     <item name="option2">option3</item> 
     <item name="option3">option4</item> 
</string-array> 

我得到了所有與此代碼

String[] quesArray = getResources().getStringArray(R.array.Question1); 

元素現在我想要得到的字符串「答案」,以便它可以進一步利用和操縱 怎麼可能? 我

int resId = context.getResources().getIdentifier("Answer", "string", getPackageName()); 

嘗試過,但它給錯誤

android.content.res.Resources$NotFoundException: String resource ID #0x0 

回答

0

試試這個:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<string-array name="testArray"> 
    <item>first</item> 
    <item>second</item> 
    <item>third</item> 
    <item>fourth</item> 
    <item>fifth</item> 
</string-array> 
</resources> 

而且還嘗試此鏈接,這將是對您有所幫助:

Help in getting String Array from arrays.xml file

0
<string name="question">This is Question1</string> 
<string name="answer">Answer</string> 

<string-array name="question1"> 
    <item>@string/question</item> 
    <item>@string/answer</item> 
</string-array> 
0

一個字符串數組不是字符串資源(這是你正在getIdentifier中請求)。

鑑於你的問題,答案,選項的字符串數組中有一個固定的結構,最簡單的方法來做你所建議的只是使用你已經採用的固定索引。那就是 - 給數組作爲這樣的:

<string-array name="Question1"> 
    <item>This is Question1</item> 
    <item>1</item> 
    <item>option1</item> 
    <item>option2</item> 
    <item>option3</item> 
</string-array> 

訪問你的答案如下(請注意,我代替你的答案「串」與索引到正確的答案):

final int QUESTION = 0; 
final int ANSWER = 1; 
String question = quesArray[QUESTION]; 
String answer = quesArray[Integer.parseInt(quesArray[ANSWER]) + 1)]; 
0

試用爲如下:

<string-array name="Question1"> 
    <item>This is Question1</item> 
    <item>option1</item> 
    <item>option2</item> 
    <item>option3</item> 
    <item>option4</item> 
</string-array> 
String[] quesArray = getResources().getStringArray(R.array.Question1); 
int resId = context.getResources().getIdentifier("Answer", "string", getPackageName());