2012-11-30 92 views
2

我偶爾會在我的ArrayAdapter中填充我的ListFragment中的NullPointerException。看起來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); 
} 

我使用一個Loader來獲取數據,我不init,可以直到onActivityCreated方法。在加載器完成加載之前,不會創建適配器,所以它不應該在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

我已經確定,唯一可能的解釋是,我使用的原因onLoadFinishedFragmentStatePagerAdapter當片段在某些情況下被分離,從而在運行時getView爲迫使一個附加的活動進行檢查,被調用。

相關問題