我在片段活动中运行setText命令,尝试在父活动中设置textView的文本,但它不起作用。有什么想法吗?
TextView text = (TextView) getView().findViewById(R.id.status);
text.setText("Text from a fragment");
我在eclipse中没有收到错误,但是在运行时我得到了一个空指针异常。当然它发生在我setText的行。关于如何做到这一点的任何想法?
答案 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