我偶尔会在我的ArrayAdapter中得到一个填充我的ListFragment的NullPointerException。看起来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来获取数据,直到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是怎么回事吗?它并不总是发生,它只发生过一次,我再次做同样的事情,它就不会发生了。我想不出来。
发布于 2012-12-03 03:23:23
我已经确定,唯一可能的解释是,在某些情况下,当片段被分离时,我使用的FragmentStatePagerAdapter会导致调用onLoadFinished,因此在运行getView时需要检查附加的活动。
发布于 2018-04-26 05:25:02
在ArrayAdapter.getView()中,使用getContext()而不是getActivity()。
在Activity循环期间,getActivity()有时会在短暂的时间内返回null,而getContext()在相同情况下不会返回null。这个问题发生在安卓4.2,4.1和更低版本上。
https://stackoverflow.com/questions/13651262
复制相似问题