首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArrayAdapter中的getActivity()有时返回null

ArrayAdapter中的getActivity()有时返回null
EN

Stack Overflow用户
提问于 2012-12-01 02:50:07
回答 2查看 2.1K关注 0票数 3

我偶尔会在我的ArrayAdapter中得到一个填充我的ListFragment的NullPointerException。看起来getActivity()返回了null,但据我所知,它不应该这样做。

适配器代码inflater = (LayoutInflater)...是异常行:

代码语言:javascript
复制
@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之前发生。

代码语言:javascript
复制
@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是怎么回事吗?它并不总是发生,它只发生过一次,我再次做同样的事情,它就不会发生了。我想不出来。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-03 03:23:23

我已经确定,唯一可能的解释是,在某些情况下,当片段被分离时,我使用的FragmentStatePagerAdapter会导致调用onLoadFinished,因此在运行getView时需要检查附加的活动。

票数 0
EN

Stack Overflow用户

发布于 2018-04-26 05:25:02

ArrayAdapter.getView()中,使用getContext()而不是getActivity()

在Activity循环期间,getActivity()有时会在短暂的时间内返回null,而getContext()在相同情况下不会返回null。这个问题发生在安卓4.2,4.1和更低版本上。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13651262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档