2014-11-01 30 views
2

此代碼工作正常,但我想通過使用資源文件中的數組來初始化此列表。java中給出錯誤的字符串數組

private String[] data = { "Selection 1", "Selection 2", "Selection 3" }; 

此代碼從this鏈接,但它不適合我。它在片段內,所以我甚至在getResources()之前加了getActivity(),但仍然給出了錯誤。錯誤表示它是由該片段膨脹引起的。當我用上面的代碼片段替換這一行時,它工作正常。

Resources res = getResources(); 
private String[] data = res.getStringArray(R.array.sort_by); 

注:這是baseAdapter和底座適配器裏面像我有如下那baseadapter是我的片段中。

private SpinnerAdapter SortBySpinnerAdapter = new BaseAdapter() { 

    private TextView text; 
    Resources res = getActivity().getResources(); 
    private String[] data = res.getStringArray(R.array.sort_by); 
    private int count = 2; 
    ... 
+2

請給出確切* *錯誤。這是編譯時錯誤嗎?執行時異常? – 2014-11-01 08:17:25

+1

Yawar,你究竟在哪裏調用getResources和getStringArray?這是在onCreate?錯誤和更多代碼的完整堆棧跟蹤可能有助於解決您的問題。 – 2014-11-01 08:26:00

+0

糟糕,我在做什麼愚蠢的錯誤,我忘了我必須在onCreate初始化,謝謝你的提示。 – Yawar 2014-11-01 08:32:27

回答

1

移動初始化部分在OnCreate

private SpinnerAdapter SortBySpinnerAdapter; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    SortBySpinnerAdapter = new BaseAdapter() 
    { 
     private TextView text; 
     Resources res = getActivity().getResources(); 
     private String[] data = res.getStringArray(R.array.sort_by); 
     private int count = 2; 

如果做初始化出來的OnCreate中的,尚未創建/提供活動

+0

無需在onCreate中移動整個適配器,只需移動數據變量的初始化即可解決我的問題。 – Yawar 2014-11-01 08:58:05

相關問題