java - 如何在片段中启动 TextView?
问题描述
我是片段的新手,并且有以下代码:
public class TripleTab1 extends Fragment {
private TextView nameAndNumberText;
private Map<String, String> nameToNumberMapping;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
nameAndNumberText = (TextView) getActivity().findViewById(R.id.numberToNameView);
nameToNumberMapping = ContactNameAndNumberUtility
.getNameToPhoneNumberMapping(getActivity()
.getApplicationContext());
for (Map.Entry<String, String> item : nameToNumberMapping.entrySet()) {
String key = item.getKey();
String value = item.getValue();
nameAndNumberText.append(key);
nameAndNumberText.append(value);
}
return inflater.inflate(R.layout.assign_pattern_tab_1, container, false);
}
}
不幸的是,这给了我一个 NullPointerException。似乎 TextView 对象没有启动,尽管我认为它应该是。
“java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.append(java.lang.CharSequence)'”
有谁知道可能出了什么问题?
解决方案
用这个替换你的代码
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
View view =inflater.inflate(R.layout.assign_pattern_tab_1, container, false);
nameAndNumberText = (TextView) view.findViewById(R.id.numberToNameView);
nameToNumberMapping = ContactNameAndNumberUtility
.getNameToPhoneNumberMapping(getActivity()
.getApplicationContext());
for (Map.Entry<String, String> item : nameToNumberMapping.entrySet()) {
String key = item.getKey();
String value = item.getValue();
nameAndNumberText.append(key);
nameAndNumberText.append(value);
}
return view;
推荐阅读
- c# - 谷歌驱动器从内存流上传图像
- sql-server - 列值更改时触发 SQL 触发器
- java - 如何在adoptopenjdk/openjdk11:x86_64-alpine-jdk-11.0.6_10上安装python 3.7.7?
- jquery-select2 - 如何正确删除 Select2 下拉菜单
- ios - Xcode 中的单元测试 Firestore 不起作用
- linux - 从 shell 脚本执行 sqoop 语句
- wpf - 如何从 Master-Detail 中的详细值中使用 NotifyPropertyChange master
- angular - Angular 11 路由在 AWS S3 和 Cloudfront 中不起作用
- php - 无法从数据库中显示 PHP 中的图像
- javascript - 如何在下拉列表中实现搜索以及从反应应用程序中的 API 获取数据?