【问题标题】:setText from inside a fragment片段内部的 setText
【发布时间】:2012-08-07 05:49:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: java android android-fragments android-fragmentactivity


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

      • 是的,这违背了片段,因为它不应该与活动有联系,但在我的困境中这是必要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多