2012-08-07 66 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");