首页 > 解决方案 > 如何在 Fragment 中设置 TextView 的值?

问题描述

我在我的动态应用程序中使用片段,其中 User.java 文件包含值,TabbedActivity.java文件包含三个片段。我想将文本设置为TextViewin ProfileFrgament.java。所以,我创建了一个TextViewin并使用以下代码fragment_profile.xml从文件中引用它TabbedActivity.java

    name = findViewById(R.id.name);
    //getting the current user
    User user = SharedPrefManager.getInstance(this).getUser();
    //setting values to textviews
    name.setText(user.getUsername());

它没有显示任何编译错误,但打开后TabbedActivity.java,应用程序在行中以 NullPointerException 停止name.setText(user.getUsername());如何解决此问题?

这是ProfileFragment.java文件的代码

 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

    name = getActivity().findViewById(R.id.name);
    //getting the current user
    User user = SharedPrefManager.getInstance(getActivity()).getUser();
    //setting values to textviews
    name.setText(user.getUsername());

    return inflater.inflate(R.layout.fragment_profile, container, false);
}

标签: androidandroid-fragmentstextview

解决方案


TextView在里面fragment_profile.xml,你试图在里面找到它TextViewTabbedActivity.java所以NullPointerException发生了

把这段代码放进去ProfileFrgament.java

用这个改变你的代码

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) 
{ 
    final View rootView = inflater.inflate(R.layout.fragment_profile, container, false);
    name = (TextView) rootView.findViewById(R.id.name);
    User user = SharedPrefManager.getInstance(getActivity()).getUser(); 
    name.setText(user.getUsername()); 

    return rootView;
}

推荐阅读