0

我在片段内创建了一个接口,并在父活动中实现了它。

当代码看起来像这样时,一切正常:

public class ExercisesCatsFragment extends Fragment {
OnCategorySelected mCallback;
...
    @Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    mCallback = (OnCategorySelected) activity;
}

但是当我尝试在类本身中实例化 mCallback 时,调用接口时会出现 nullpointerexception。非工作代码如下所示(没有覆盖 onAttach()):

public class ExercisesCatsFragment extends Fragment {
OnCategorySelected mCallback = (OnCategorySelected) this.getActivity();

有谁知道背后的原因?父activity是一个FragmentActivity;这可能是错吗?

谢谢

4

1 回答 1

4

this.getActivity()在您在 Fragment 的主体中调用的第二个(非工作)代码中-此时它没有附加到一个Activity所以this.getActivity()将返回null

只需按照您在第一个代码块中显示的方式或onCreate(...)Fragment.

于 2012-09-21T22:55:39.730 回答