我在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 ...
任何帮助将不胜感激。
答案 0 :(得分:0)
我认为你得到NullPointerException,因为你的((UnitFragment)this._cupAdapter.getItem(1))方法每次调用这个方法时都会返回一个新创建的片段。
因此,如果你在它之后调用LoadUnitContent()方法,那么片段还没有被添加到ViewPager中,并且片段的onCreate()方法从未被调用过,因此你的视图为空。
只需在方法中添加Log.d(“Fragment”,“onCreate”)和Log.d(“Fragment”,“LoadUnitContent”),看看是否首先调用LoadUnitContent。