2013-01-19 55 views
2

我已經嘗試過所有可能的問題,但是無法繞過它。Android:靜態變量在適配器內爲空

我有一個java文件(機器人活動),我宣佈

private someAdapter someAdapterObj; 

裏面的onCreate()我調用構造函數和獲取適配器實例化。

this.someAdapterObj= new someAdapter (this, 
         R.layout.item_row,someAdapter.getAllNews()); 

裏面someAdapter文件,我有

private static someArrayList; 

我也有一個addtoarraylist()內someAdapter。

現在,我在mainActivity中調用onCreate的addtoarraylist(),但在實例化適配器之前。這應該是可能的,因爲數組列表是靜態的。但是,當我將其添加到數組列表時,我會收到一個空指針異常。有人可以幫幫我嗎?

+5

那麼你初始化'someArrayList'在哪裏?你沒有顯示。 –

+2

請問您可以添加'someAdapter'代碼嗎? –

+0

@JonSkeet Mann ..非常感謝..我怎麼沒有看到..那正是問題所在。上帝,我跳出大樓.. :) –

回答

4

任何類型爲類的實例或靜態變量(非基元)默認爲null。您需要初始化 - 例如:

private static List<Foo> someArrayList = new ArrayList<Foo>(); 

然而

  • ArrayList不是線程安全的,所以你需要同步
  • 使用像這樣的靜態變量一點代碼味道(全局狀態);如果你可以正確地連接你的組件,所以你不需要任何全局狀態通常更清潔