1

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

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

我在 Eclipse 中没有收到错误,但在运行时出现空指针异常。当然它发生在我设置文本的那一行。关于如何做到这一点的任何想法?

4

2 回答 2

5

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

TextView text = (TextView) getActivity().findViewById(R.id.status);
text.setText("Text from a fragment");
于 2012-10-05T21:56:04.870 回答
2

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

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

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

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

如果您想从 Fragment 设置 TextView,通常的方法是使用方法(updateText()例如)在 FragmentActivity 上定义一个接口,并让 Fragment 调用该方法。然后 Activity 处理 TextView 更新,这很好,因为它可以调用getView()它将返回您正在寻找的视图。这与我在此处发布的答案相似

于 2012-08-07T07:09:38.590 回答