动态更改片段上的LinearLayout

时间:2013-10-31 14:52:25

标签: android android-fragments fragment

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

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

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中设置的所有变量现在都为null ...

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

因此,如果你在它之后调用LoadUnitContent()方法,那么片段还没有被添加到ViewPager中,并且片段的onCreate()方法从未被调用过,因此你的视图为空。

只需在方法中添加Log.d(“Fragment”,“onCreate”)和Log.d(“Fragment”,“LoadUnitContent”),看看是否首先调用LoadUnitContent。