java - 从Android Studio中的 fragment 调用方法时如何避免空指针异常?

标签 java android xml android-studio

<分区>

所以我为我的应用程序创建了一个 fragment 。在 fragment 中,我有一个通过 xml 文件创建的 EditText 字段(其 id 是 myText)。现在,在这个 fragment 的 Java 类中,我正在使用以下命令创建对此文本字段的引用:

EditText myText = (EditText) getView().findViewById(R.id.myText);

但是,我收到关于此声明的警告:

Method invocation `getView().findViewById(R.id.myText)' may produce 'java.lang.NullPointerException'.

此外,当我运行该应用程序时,它会由于相同的 NullPointerException 而提前终止。我做了完全相同的事情,只是没有使用 fragment (也就是说,我在我的主要 Activity 的 xml 文件中创建了一个 EditText 字段)并使用以下命令在 Java 文件中创建了对它的引用:

EditText myText = (EditText) findViewById(R.id.myText);

而且效果很好。

所以我的问题是,为什么这适用于第二种情况而不适用于第一种情况?我如何让它在第一种情况下起作用?

最佳答案

看看这个guide来自官方 Android 文档。

当您创建 fragment 时,您使用 onCreateView 中提供的 LayoutInflater 膨胀 fragment 的 View

inflater.inflate(R.layout.article_view, container, false);

要访问此布局中的 View ,您可以在 inflater.inflate 返回的 View 上调用 findViewById(R.id.yourId);

总的来说应该是这样的

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.yourLayout, container, false);
    EditText myText = (EditText) view.findViewById(R.id.myText);

    ...
    return view;
}

关于java - 从Android Studio中的 fragment 调用方法时如何避免空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685126/

相关文章:

java - 使用 Apache POI 获取/修改一个或多个 Excel 工作表中的单元格值

Java 8 DateTimeFormatter 解析不同重要性的可选小数秒

java - 用户有谷歌帐户或电子邮件帐户注销强制关闭firebase

android - 如何将 Android Open Accessory 模式实现为服务?

java - 如何创建 DTD 并将其集成到 JAR 文件中..?

java - 检索列表大小时发生 ConcurrentModificationException

java - Play Framework 2.1 : Validation Form (error messages)

android - 如何在 Android 的 xml <string> 资源中保留换行符?

android 与 iphone 上的 jquery 移动事件

java - 如何在Java中使用Sax/Dom解析器读取xml文件?