0

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 になっているようです...

どんな助けでも大歓迎です。

4

1 に答える 1

0

((UnitFragment) this._cupAdapter.getItem(1)) メソッドは、このメソッドを呼び出すたびに新しく作成されたフラグメントを返すため、 NullPointerException が発生すると思います。

したがって、その直後に LoadUnitContent() メソッドを呼び出すと、フラグメントはまだ ViewPager に追加されておらず、フラグメントの onCreate() メソッドは呼び出されていないため、ビューは null になります。

メソッドに Log.d("Fragment", "onCreate") と Log.d("Fragment", "LoadUnitContent") を追加するだけで、LoadUnitContent が最初に呼び出されるかどうかを確認できます。

于 2013-10-31T16:17:32.607 に答える