2013-01-19 2 views
2

여기에 가능한 모든 질문을 시도했지만 주위를 둘러 볼 수 없었습니다.Android : 정적 변수가 어댑터 내부에서 null입니다.

은 내가

private someAdapter someAdapterObj; 

내부에서 onCreate()를 내가 생성자를 호출하고 어댑터가 인스턴스화받을 선언 자바 파일 (안드로이드 활동)을 가지고있다.

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

내부 someAdapter 파일, 나는 또한 someAdapter 내부 addtoarraylist()를 가지고

private static someArrayList; 

있습니다.

이제 mainActivity의 onCreate에서 addtoarraylist()를 호출하지만 어댑터를 인스턴스화하기 전에 호출합니다. 이것은 arraylist가 정적이기 때문에 가능해야합니다. 하지만 arraylist에 추가 할 때 nullpointer 예외가 발생합니다. 누군가 나를 도울 수 있습니까?

+5

그럼'someArrayList'를 어디에서 초기화합니까? 당신은 그것을 보여주지 않았습니다. –

+2

'someAdapter' 코드를 추가 하시겠습니까? –

+0

@JonSkeet Mann .. 많이 .. 고맙습니다. 어떻게 보지 못했습니까? 그것은 정확히 문제였습니다. 하나님, 건물에서 뛰어 내리고 있습니다. :) –

답변

4

유형이 클래스 (원시가 아닌) 인 모든 인스턴스 또는 정적 변수의 기본값은 null입니다. 당신은 그것을 초기화해야합니다 - 예를 들면 : 그러나

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

:

  • ArrayList 스레드로부터 안전하지 않습니다, 당신은 동기화를
  • 이이 같은 정적 변수의 사용이 필요합니다 그래서 약간의 코드 냄새 (글로벌 상태); 당신이 당신의 구성 요소를 적절히 연결하여 전역 상태가 필요 없으면 보통 더 깨끗합니다.
관련 문제