为什么将 OnClickListener 分配给 AutoCompleteTextView 会给出 NullPointerException?

2023-12-14

每当我将 android:onClick 属性分配给 AutoCompleteTextView 时,我的应用程序在加载活动时立即崩溃。我已经在没有分配 onClick 方法的情况下测试了 AutoCompleteTextView,它似乎工作得很好,就像将 onClick 分配给其他视图(包括 EditText、Spinners、TextViews、Buttons 和 ImageButtons)一样。我已成功将错误范围缩小到第 24 行 (setContentView(R.layout.activity_main))。有人能解释一下吗?

MainActivity.java

    package com.example.matt.testapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends AppCompatActivity {
    public AutoCompleteTextView actv;
    public String[] continents = {"North America",
            "South America",
            "Antarctica",
            "Europe",
            "Africa",
            "Asia",
            "Australia"
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        actv = (AutoCompleteTextView) findViewById(R.id.actv);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, continents);
        actv.setAdapter(adapter);
    }

    public void actvClick (View view) {}
}

活动_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent"
    android:layout_width="match_parent" >

    <AutoCompleteTextView
        android:id="@+id/actv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="actvClick" >
    </AutoCompleteTextView>
</LinearLayout>

Logcat

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.matt.testapp/com.example.matt.testapp.MainActivity}: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class AutoCompleteTextView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: android.view.InflateException: Binary XML file line #7: Binary XML file line #7: Error inflating class AutoCompleteTextView
Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class AutoCompleteTextView
Caused by: java.lang.NullPointerException: Attempt to write to field 'android.view.View$OnClickListener android.widget.AutoCompleteTextView$PassThroughClickListener.mWrapped' on a null object reference
at android.widget.AutoCompleteTextView$PassThroughClickListener.-set0(Unknown Source:0)
at android.widget.AutoCompleteTextView.setOnClickListener(AutoCompleteTextView.java:307)
at android.view.View.<init>(View.java:5008)
at android.widget.TextView.<init>(TextView.java:824)
at android.widget.EditText.<init>(EditText.java:88)
at android.widget.AutoCompleteTextView.<init>(AutoCompleteTextView.java:220)
at android.widget.AutoCompleteTextView.<init>(AutoCompleteTextView.java:193)
at android.widget.AutoCompleteTextView.<init>(AutoCompleteTextView.java:172)
at android.support.v7.widget.AppCompatAutoCompleteTextView.<init>(AppCompatAutoCompleteTextView.java:68)
at android.support.v7.widget.AppCompatAutoCompleteTextView.<init>(AppCompatAutoCompleteTextView.java:64)
at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:130)
at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1026)
at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1083)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:289)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at com.example.matt.testapp.MainActivity.onCreate(MainActivity.java:24)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

这看起来像是一个错误AutoCompleteTextView.

会发生什么:

  1. 膨胀 XML 调用AutoCompleteTextView构造函数,它调用View构造函数。
  2. View构造函数看到onClick属性和调用setOnClickListener().
  3. AutoCompleteTextView已覆盖setOnClickListener()写入内部mPassThroughClickListener场地。它仅在结束时初始化AutoCompleteTextView构造函数,并且该初始化代码尚未运行。

参考

要解决此问题,请删除onClick来自 XML 的属性并调用setOnClickListener()以编程方式在您的代码中。

我提交了一份bug有关此问题的信息,请参阅 Android 问题跟踪器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么将 OnClickListener 分配给 AutoCompleteTextView 会给出 NullPointerException? 的相关文章

随机推荐

  • UICollectionView 收到索引路径不存在的单元格的布局属性

    我使用 UICollection 视图来显示网格布局中的项目 对于数据源 我使用 5 5 维数组 我还为节中的 numberOfItems 返回 5 为 numberOfSections 返回 5 然后我的应用程序也因以下错误而崩溃 UIC
  • 使用 C# 是否可以测试文件是否持有锁

    背景 我使用文件偏移量和文件流锁定 解锁方法来控制读 写访问 我正在使用以下代码来测试文件当前是否持有锁 try fs Lock RESERVED BYTE 1 fs Unlock RESERVED BYTE 1 rc 1 catch rc
  • 在 VBA 中使用 InStr 进行多字符串搜索

    我正在检查名称文本框是否以 Mr Mrs Ms 等开头 我创建了一个函数 但无法比较多个字符串 这是我的代码 Checking whether name is starts with Mr Mrs Ms Dr or not If Not F
  • 用外行人的话来说,什么是 Unobtrusive Javascript? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 用外行人的话来说 什么是 Unobtrusive Javascript 举一个例子可以很好地帮助我理解 查看维基百科文章 不引人注目的 JavaScript Unobtrusiv
  • git merge:删除我想保留的文件!

    如何在 git 中合并两个分支 同时保留必要的来自分支的文件 合并两个分支时 如果一个文件在一个分支中被删除 而在另一个分支中没有被删除 则该文件最终将被删除 例如 当您创建新分支时 master 中存在一个文件 您从 master 中删除
  • 创建较大集合的固定长度非重复排列

    我知道这个话题被广泛讨论 但我似乎找不到任何适合我需求的实现 我有以下字符集 abcdefgh 我想获得所有可能的排列或组合 不重复 但在有限 可变 字符集上 意思是如果我输入字符和数字2 结果应该是这样的 ab ba ac ca ad d
  • 将原始输入变量除以数字时出现 Python TypeError

    我想将输入的磅重量转换为千克 但出现以下错误 类型错误 不支持的操作数类型 unicode 和 float My code lbweight raw input Current Weight lb kgweight lbweight 2 2
  • 挂载前判断网络共享是否存在

    我正在开发一种工具 可以根据用户连接的无线网络自动安装网络卷 安装卷很简单 NSURL volumeURL The URL to the network volume Attempt to mount the volume FSVolume
  • Springboot异常处理程序没有捕获异常

    在 Spring Boot 和 Rest 应用程序中 我配置了一个异常处理程序 如下所示 如果在请求使其停止服务后抛出异常 它可以正常工作 Rest api 需要 application json 的内容类型 如果我不将该内容类型标头发送到
  • 用 Java 处理条形码扫描

    我想让我的应用程序对扫描的条形码做出反应以触发按钮按下 例如 用户可以扫描 打印 条形码来激活打印按钮 条形码将被视为用户输入了一些文本 我不确定扫描仪是否会被设置为在末尾附加一个输入或一个选项卡或什么都没有 所以我不想在此基础上做出假设
  • 将等高线添加到 3D 绘图

    我正在使用 R 编程语言 我使用 plotly 库制作了以下 3 维图 library dplyr library plotly my function lt function x y final value 1 x 2 100 y x 2
  • 如何获取 foreach 循环当前迭代的索引?

    在 C 中是否有一些我没有遇到过的罕见语言构造 比如我最近学到的一些 一些在 Stack Overflow 上 来获取表示 foreach 循环当前迭代的值 例如 我目前根据情况做这样的事情 int i 0 foreach Object o
  • Threejs Blender 导出器导出格式错误

    我正在尝试在提供的帮助下将搅拌机模型导出到 Threejs json搅拌机出口商 解析 json 文件时出现错误 Uncaught TypeError Cannot read property length of undefined jso
  • 运行 plm 固定效应模型并添加因子虚拟变量(树方式固定效应)是否可以?

    运行 plm 固定效应模型并在 R 中添加因子虚拟变量 如下所示 是否可以 时间 公司 和 国家 这三个因素都是独立的指数 我想将它们一起修复 我发现下面的规范更适合我的情况 而不是通过组合 公司 和 国家 地区 来总共创建两个索引 这是可
  • Perl 数组与列表

    我在 Perl 中有两个数据结构 数组 my array2 1 2 3 for elem array2 print elem n 给我以下输出 1 2 3 还有一个清单 my array 1 2 3 for elem array print
  • 在 Java 中 - 如何将 resultSet 映射到复杂对象?

    如何将几个表中的结果集映射到复杂的对象中 让我详细说明一下 假设我有这两门课 public class User private int user id private String fname private String lname g
  • Facebooker 扩展权限?

    Facebook 允许访问 通过扩展权限访问用户的电子邮件 JS 和 PHP 中还有一种方法可以强制用户授予 当他们接受应用程序的 TOS 时获得许可 http wiki developers facebook com index php
  • 用 self 调用类变量

    你会如何想出这个有趣的 至少对我来说 例子 import numpy as np class Something object a np random randint low 0 high 10 def do self self a 1 p
  • 无法在OREO中获取默认帐户

    在安卓奥利奥中 AccountManager getAccountsByType com google 回报null 它在 Android 8 以下版本中运行良好 下面是我的代码 private static Account getAcco
  • 为什么将 OnClickListener 分配给 AutoCompleteTextView 会给出 NullPointerException?

    每当我将 android onClick 属性分配给 AutoCompleteTextView 时 我的应用程序在加载活动时立即崩溃 我已经在没有分配 onClick 方法的情况下测试了 AutoCompleteTextView 它似乎工作