setText来自片段内部

时间:2012-08-07 05:49:08

标签: java android android-fragments android-fragmentactivity

我在片段活动中运行setText命令,尝试在父活动中设置textView的文本,但它不起作用。有什么想法吗?

TextView text = (TextView) getView().findViewById(R.id.status);
        text.setText("Text from a fragment");

我在eclipse中没有收到错误,但是在运行时我得到了一个空指针异常。当然它发生在我setText的行。关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:5)

使用getActivity()。它将导致findViewById()方法在基本活动中开始搜索并冒泡,直到找到“r.id.status”。

TextView text = (TextView) getActivity().findViewById(R.id.status);
text.setText("Text from a fragment");

答案 1 :(得分:2)

是的,您的NPE可能是因为R.id.status可能未在片段视图中定义。

getView()将返回您片段的onCreateView()方法中生成的视图。

您是尝试从(辅助)FragmentActivity设置Activity中的TextView还是尝试从Fragment中设置FragmentActivity中的TextView?

如果它是第一个选项,你会想要做一些事情,比如使用消息处理程序并向第二个Activity传递一条消息。我不认为这就是你所要求的。

如果您想要从Fragment设置TextView,通常的方法是使用方法(例如updateText())在FragmentActivity上定义接口并获取Fragment以调用方法。然后,Activity处理TextView更新,它可以很好地工作,因为它可以调用getView(),它将返回您正在查找的视图。这与我发布的here

的答案类似