gpt4 book ai didi

java - 在 Activity 中访问 Fragment 的 textView 时出现 NullPointerException

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:57 25 4
gpt4 key购买 nike

这似乎是一个常见问题,但经过数小时尝试随机解决类似问题的答案后,当我从 Activity 访问 Fragment 的 textView 时,我的代码仍然产生 NullPointerException。

我可以在 Fragment 的 textView 具有预定义的 Text 时包含(和查看)我的 Fragment,或者通过在 Fragment 类的 onCreateView() 中使用 setText() 但不能通过使用 setter 方法(此处为 set_message_success())。

这是我的片段类 Fragment_Message:

public class Fragment_Message extends Fragment {

TextView textview_message;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_messagebox, container, false);
textview_message = (TextView) view.findViewById(R.id.fragment_textview_message);
textview_message.setText("test");
return view;
}

public void set_message_success(String text) {
textview_message.setText(text);
}
}

以及 Activity 类中的相关行:

FragmentManager frag_manager    = getFragmentManager();
FragmentTransaction transaction = frag_manager.beginTransaction();
Fragment_Message fragment = new Fragment_Message();
fragment.set_message_success(message_green);
transaction.add(R.id.home_fragment_container, fragment, "Fragment");
transaction.commit();

home_fragment_container 是我的 main_activity.xml 中的 RelativeLayout,fragment_textview_message 是 fragment_messagebox.xml 中的 textView,只是想让你知道,这些是什么。

NullPointerException 是在 set_message_success() 中引起的。有什么想法吗?

最佳答案

您正在创建片段,但未执行创建周期。这一行:

Fragment_Message fragment = new Fragment_Message();

不会自动调用 onCreateView,因此您的 TextView 未初始化(null),当您尝试使用以下行设置其文本时:

fragment.set_message_success(message_green);

由于 TextView 成员未初始化,因此出现异常,因此要么在构造函数中初始化 TextView ,要么在所需布局中定义片段。

here获取详细信息

关于java - 在 Activity 中访问 Fragment 的 textView 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26389938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com