2012-08-07 110 views
1

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

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

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

回答

2

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

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

你是否试图在你的Activity中设置一个TextView(从属)FragmentActivity或试图从你的FragmentActivity中设置一个TextView中的TextView?

如果是第一个选项,您将需要执行类似于使用消息处理程序并向第二个活动传递消息的操作。我不认为这是你所问的。

如果你想从一个片段设置一个TextView,要做到这一点,一般的方法是定义一个接口上的方法(updateText()例如)您FragmentActivity并获得片段调用的方法。该活动然后处理TextView更新,这很好地工作,因为它可以调用getView()这将返回您正在寻找的视图。这与我的回复相似here

+0

是的,这是违反片段,因为它不应该与活动有关系,但它是我的困境必要的。 – EGHDK 2012-08-10 07:39:19

5

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

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