2012-11-30 48 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为迫使一个附加的活动进行检查,被调用。

相关问题