0

我在 ViewPager 中有一个非常基本的片段。该片段包含一个线性布局。当我尝试调整线性布局的内容时,我从线性布局中得到一个空指针异常:

//父活动(这包含寻呼机)

public void goToUnit(Unit unit) {

    ((UnitFragment) this._cupAdapter.getItem(1)).LoadUnitContent(unit);

    _pager.setCurrentItem(1, true);

}

//分段

public void LoadUnitContent(Unit latestUnit)
{
    this.set_unit(latestUnit);
    if(latestUnit != null) {
        View v = this.getView(); //-- this shows as null
        LinearLayout ll = (LinearLayout)v.findViewById(R.id.llExplanation);

    }
}

当我尝试从此方法访问它们时,似乎在 onCreateView 中设置的所有变量现在都为空...

任何帮助将不胜感激。

4

1 回答 1

0

我认为您得到 NullPointerException 是因为您的 ((UnitFragment) this._cupAdapter.getItem(1)) 方法每次调用此方法时都会返回一个新创建的片段。

因此,如果您在它之后立即调用 LoadUnitContent() 方法,则该片段尚未添加到 ViewPager 并且该片段的 onCreate() 方法从未被调用,因此您的视图为空。

只需在您的方法中添加 Log.d("Fragment", "onCreate") 和 Log.d("Fragment", "LoadUnitContent") 以查看是否首先调用 LoadUnitContent。

于 2013-10-31T16:17:32.607 回答