2012-11-30 4 views
2

가끔 ArrayAdapter에 NullPointerException이 표시되어 ListFragment가 채워집니다. getActivity()이 null을 반환하는 것처럼 보입니다.하지만 내가 알 수있는 한 그렇게하지 말아야합니다.ArrayAdapter의 getActivity()가 null을 반환하는 경우가 있음

어댑터 코드 inflater = (LayoutInflater)...는 예외 라인 : 나는 데이터를 얻을 수있는 로더를 사용하고

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    view = convertView; 

if (view == null) 
{ 
    /* Inflate a row */ 
    inflater = (LayoutInflater)getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); // THIS IS THE EXCEPTION LINE 
    view = inflater.inflate(R.layout.pairing_list_row, parent, false); 
} 

, 그리고 나는 onActivityCreated 방법 때까지 init을하지 않습니다. 어댑터는 로더가로드를 완료 할 때까지 작성되지 않으므로 onActivityCreated 이전에는 발생하지 않아야합니다.

@Override 
public void onActivityCreated(Bundle savedInstanceState) 
{ 
    super.onActivityCreated(savedInstanceState); 
    getLoaderManager().initLoader(0, null, this); 
} 

@Override 
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) 
{ 
    PairingArrayAdapter pairings = (PairingArrayAdapter)getListAdapter(); 
    if (pairings == null) 
    { 
     pairings = new PairingArrayAdapter(getActivity(), R.layout.pairing_list_row); 
     setListAdapter(pairings); 
    } 
    ... 

NullPointerException의 원인에 대한 아이디어가 있으십니까? 그것은 항상 일어나지 않습니다. 한 번 발생합니다. 나는 다시 똑같은 일을하고 그것은 일어나지 않습니다. 나는 그것을 이해할 수 없다.

답변

0

내가 유일하게 가능한 설명은 조각이 getView를 실행하는 경우 따라서 첨부 된 활동에 대한 검사를 필요로 특정 상황에서 분리 될 때 나는 원인 onLoadFinished를 사용하고있어 FragmentStatePagerAdapter 호출 할 수 있다는 것입니다 것으로 확인되었습니다.

관련 문제