2012-06-22 138 views
4

我试图从片段更改活动标题(在本例中,它是一个android.support.v4.app.Fragment)。为此,当片段上调用onAttach()时,我将活动保存在片段上的属性中。根据文档,onAttach()应该在onCreateView()之前调用,我使用它来请求用于填充视图的一些数据。当我启动网络检索的线程时,我想在标题中指出,所以我想从Fragment中调用this.activity.setTitle()。然而,这一直抛出NullPointerException。我在这里错过了什么?从片段访问活动

+1

[getActivity](http://developer.android.com/reference/android/app/Fragment.html#getActivity()) – adneal

+0

是的,只是使用getActivity(); ..... –

回答

9

您可以使用getActivity()访问片段中的活动。只要在片段上调用onActivityCreated(),就可以安全地调用它。在此之前,它可能不存在或可能尚未完全初始化。

如果您的线程在此之前开始,只需注意您的Fragment中的某处,然后在调用onActivityCreated后才更改标题。

+0

这似乎工作。虽然,我看到一个我的Activity的onAttach()实际实例,但我无法调用任何方法。 – djc

+0

Scratch that ...它看起来像onActivityCreated()甚至没有在我的片段上调用? – djc

+0

好吧,我忘记了onActivityCreated()的参数。它被调用,但是当我调用getActivity()。setTitle(String)时,它仍然会抛出NullPointerException异常。 – djc