2013-10-31 121 views
0

我在ViewPager中有一個非常基本的片段。該片段包含一個線性佈局。當我嘗試調整的LinearLayout我從一個的LinearLayout異常空指針的內容:動態更改片段上的LinearLayout

//父活動(這包含尋呼機)

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設置的所有變量現在爲空,當我嘗試從這種方法訪問它們...

任何幫助將不勝感激。

回答

0

我覺得你得到的NullPointerException因爲你((UnitFragment)this._cupAdapter.getItem(1))方法每次調用此方法時,返回一個新創建的片段。

因此,如果您緊接着調用LoadUnitContent()方法,那麼該片段還沒有添加到ViewPager中,並且該片段的onCreate()方法從未被調用,因此您的視圖爲空。

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