2017-07-15 57 views
1

我在測驗問題中工作。將字符串從Java類遷移到資源

我對「Questions.java」

package com.example.luisbalmant.quickquiz_science; 

import android.widget.TextView; 

/** 
* Created by LuisBalmant on 15/07/2017. 
*/ 

public class Questions { 
    public String mQuestions[] = { 
      "My question here", 


    }; 
} 

我在想「的strings.xml」的使用字符串的語言「我的問題在這裏。」

如:

<string name="Q1_function_insulin">What is the function of insulin?</string> 

我想這一點:

getString(R.string.Q1_function_insulin), 

有人能幫助我嗎?

回答

0

您需要一個Context對象才能執行getString()。因此,你可以重構你的類是這樣的:

 

    public class Questions { 

     private static final int QUESTIONS[] = { 
       R.string.text1, 
       R.string.text2 
     }; 

     private Context context; 

     public Questions(Context context) { 
      this.context = context; 
     } 

     public String getString(int index) { 
      return context.getString(QUESTIONS[index]); 
     } 
    } 
 

,然後從你的活動:

Questions questions = new Questions(MainActivity.this); 
questions.getString(0); 
+0

謝謝azizbekian。 –

0

如果我的問題是正確的,我假設你想加載strings.xml文件中的所有問題,並將它們放入mQuestions數組中。你在那裏寫的(getString(R.string.Q1_function_insulin))應該沒有任何問題。我建議你把所有的問題都放到xml裏面,然後用getStringArray(R.array.questions)加載整個數組。

+0

哦,還有,下次請說,其確切的問題是什麼,你的代碼的一部分不工作。如果可能,請附上日誌和堆棧跟蹤。 – dedda1994

+0

謝謝。我嘗試使用「(getString(R.string.Q1_function_insulin))」,但不起作用。我刪除了所有內容並重寫了它。我沒有成功。 –

+0

您需要一個上下文才能從xml獲取資源。如果您嘗試在問題類中調用getString(),則不存在此類方法。嘗試在Activity中加載問題或將有效上下文傳遞給Questions,以便可以從context.getResources()返回的資源上調用getString()。看看[文檔](https://developer.android.com/guide/topics/resources/string-resource.html) – dedda1994