2015-04-18 53 views
0

我從文件中讀取了大量數據,並且我想從中創建ui。我創建了很多textview和單選按鈕,但是當我在設備或模擬器上嘗試此操作時,我到處都是白色文本,爲什麼?爲什麼動態單選按鈕顏色是白色的?

如果我在xml中創建一個單選按鈕,它是黑色的!但我的動態單選按鈕的顏色是白色:(

public void buildScreen(){ 

    TextView header = new TextView(context); 
    header.setText(dataManager.getHeaderString()+"\n"+dataManager.getqType()); 
    dataManager.setMainTable(tbl); 

    TableRow row; 
    for (Map.Entry<String, SimpleQuestionModel> entry : dataManager.getqDict().entrySet()){ 
     String question = entry.getKey(); 
     SimpleQuestionModel model = entry.getValue(); 

     row = new TableRow(context); 
     TextView tv = new TextView(context); 
     tv.setText(model.getQuestion()); 
     dataManager.getMainTable().addView(tv); 

     RadioGroup rg = new RadioGroup(context); 
     rg.setOrientation(RadioGroup.VERTICAL); 
     for (int j=0;j<model.getAnswers().size();j++){ 
      RadioButton rb = new RadioButton(context); 
      rb.setText(model.getAnswers().get(j)); 

      rg.addView(rb); 
     } 
     dataManager.getqAndA().put(tv, rg); 
     row.addView(rg); 
     dataManager.getMainTable().addView(row); 

    } 

} 

這裏是我的類constuctor:

public UIBuilder(Context context, TableLayout tbl) { 
    this.context = context; 
    this.tbl = tbl; 
    dataManager = DataManager.getInstance(); 
    DataReader dataReader = new DataReader(); 
    dataReader.readDataFromFile("first.txt"); 
} 

而且我調用這個類是這樣的:

builder = new UIBuilder(getApplicationContext(), tbl); 

    builder.buildScreen(); 

和TBL是tablelayout在我的xml中

+0

請粘貼到您要創建「動態單選按鈕」的代碼中。 – CommonsWare

+0

更新了我的問題 – just

+0

您有一個名爲'context'的數據成員。你如何初始化它? – CommonsWare

回答

4

在實例化小部件時,始終使用Activity作爲Context,如果你想讓你的主題受到尊重。使用任何其他Context將只使用股票系統主題。

This blog post由戴夫史密斯解釋何時使用什麼Context,包括提到這個問題。

+1

更具體地說,使用'Context例如,API 21+上的工具欄通常會有一個不同的主題(通過'ContextThemeWrapper')與其他活動相關聯,'AlertDialog'也有其自己的主題從活動 – alanv

+0

不知道爲什麼這個答案沒有upvoted太多。 –