android - 如何在 Fragment 中设置 TextView 的值?
问题描述
我在我的动态应用程序中使用片段,其中 User.java 文件包含值,TabbedActivity.java
文件包含三个片段。我想将文本设置为TextView
in ProfileFrgament.java
。所以,我创建了一个TextView
in并使用以下代码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);
}
解决方案
你TextView
在里面fragment_profile.xml
,你试图在里面找到它TextView
,TabbedActivity.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;
}
推荐阅读
- node.js - 监视错误 - npm ERR!缺少脚本:观看
- bash - Bash if 条件:"-gt" vs ">" 使用 [[
- rust - 我可以在静态向量中有非静态结构吗
- php - 如何检查两个日期之间是否存在条目
- c# - 为什么 Xamarin ClipboardManager 不包含仅纯文本的 html?
- python - 使用 1.14 版中的预制 Estimator 进行推理的输入函数
- php - 在 cURL 中发送发布请求以获取 cookie 在一个虚拟主机上有效,但在另一个虚拟主机上无效
- php - .htaccess - 将所有 URL + 现有目录重定向到 index.php
- node.js - 从带有数据的nodejs向php Api发出请求
- javascript - 在 macOS 中停止 Webpack 的正确方法是什么?