小编典典

getActivity() 在 Fragment 函数中返回 null

all

我有一个像这样的公共方法的片段(F1)

public void asd() {
    if (getActivity() == null) {
        Log.d("yes","it is null");
    }
}

是的,当我(从活动)调用它时,它是空的......

FragmentTransaction transaction1 = getSupportFragmentManager().beginTransaction();
F1 f1 = new F1();
transaction1.replace(R.id.upperPart, f1);
transaction1.commit();
f1.asd();

这一定是我做错了什么,但我不知道那是什么。


阅读 223

收藏
2022-06-29

共1个答案

小编典典

commit调度事务,即它不会立即发生,而是在下一次主线程准备好时调度为主线程上的工作。

我建议添加一个

onAttach(Activity activity)

您的方法Fragment并在其上放置一个断点,并查看相对于您对asd(). 您会看到它是在您调用asd()exit
的方法之后调用的。onAttach调用是附加到其活动的Fragment位置,从这一点开始getActivity()将返回非空值(nb
还有一个onDetach()调用)。

2022-06-29