【发布时间】:2011-09-07 02:22:07
【问题描述】:
我有一个像这样的公共方法的片段 (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();
一定是我做错了什么,但我不知道那是什么。
【问题讨论】:
-
我不确定您将它粘贴到这篇文章时是否只是一个错误,但您需要在
getActivity()后面加上括号。另外,你是如何实例化片段的?你的 layout.xml 中有吗? -
第二个代码片段属于哪里?到 Activity 的 oncreate() 方法?你已经调用 setContentView() 了吗?
-
R.id.upperPar 是布局中的一个元素,所以它应该被片段替换,但这不是我的问题。我不明白为什么当我在自定义片段方法中调用 getActivity() 时我得到 null,假设在 onActivityCreated 方法中 getActivity 是实际活动不是 null
-
问题不在布局中,应用运行良好,但为什么我的 getActivity 为空?,顺便说一句,包括它呈现的片段在内的所有元素在这里不应该出现问题
-
你应该调用这个方法:f1.asd();在要在片段类中覆盖的 onActivityCreated 方法中。
标签: android android-fragments android-activity null android-context