OnTouch 和 OnClick 冲突:指定为非 null 的参数为 null:方法 kotlin.jvm.internal.Intrinsics.checkNotNullParameter,参数 e1

2024-04-19

我有一个 Recyclerview,允许用户通过向上滑动来更改比例,我为此使用gestureDetector 和 onFling,这工作正常,但是用户应该能够单击 recyclerView 的项目,我通过创建一个界面来做到这一点RecyclerView 并单击“活动”中的“活动”,但现在向上滑动时出现此错误。

java.lang.NullPointerException:指定为非 null 的参数为 null:方法 kotlin.jvm.internal.Intrinsics.checkNotNullParameter,参数 e1 在 com.example.simmone.utils.SwipeServices$GestureListener.onFling(来源未知:2) 在 android.view.GestureDetector.onTouchEvent(GestureDetector.java:763) 在 com.example.simmone.utils.SwipeServices.onTouch(SwipeServices.kt:33)

SwipeService.kt

class SwipeServices : View.OnTouchListener {
    enum class SwipeDirection {
        bottomToTop
    }

    private var rootLayout: ViewGroup? = null
    private var layoutToShowHide: ViewGroup? = null
    private var gestureDetector: GestureDetector? = null
    private var swipeDirections: MutableList<SwipeDirection>? = null

    fun initialize(rootLayout: ViewGroup, layoutToShowHide:ViewGroup?, swipeDirections: MutableList<SwipeDirection>,maxSwipeDistance: Int = 1) {
        val gestureListener = GestureListener()
        gestureDetector = GestureDetector(rootLayout.context, gestureListener)
        this.rootLayout = rootLayout
        this.layoutToShowHide = layoutToShowHide
        this.swipeDirections = swipeDirections
        gestureListener.MAX_SWIPE_DISTANCE = maxSwipeDistance
        this.rootLayout!!.setOnTouchListener(this)
    }


    @SuppressLint("ClickableViewAccessibility")
    override fun onTouch(v: View?, event: MotionEvent): Boolean {
        return gestureDetector?.onTouchEvent(event)!!
    }

    inner class GestureListener : GestureDetector.SimpleOnGestureListener() {
        var MAX_SWIPE_DISTANCE = 1
        private val SWIPE_VELOCITY_THRESHOLD = 1

        override fun onDown(e: MotionEvent): Boolean {
            return true
        }

        override fun onFling(e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float): Boolean {

            var result = false
            try {
                val diffY = e2.y - e1.y
                if (abs(diffY) > MAX_SWIPE_DISTANCE && abs(velocityY) > SWIPE_VELOCITY_THRESHOLD)  {
                        if (diffY<0) {
                            onSwipeBottomToTop()
                        }
                        }
                result = true
            } catch (exception: Exception) {
                exception.printStackTrace()
            }
            return result
        }
    }

    fun cancel() {
        layoutToShowHide?.animate()?.scaleX(1f)?.scaleY(1f)?.setDuration(500)?.start();
    }

        fun onSwipeBottomToTop() {
        layoutToShowHide?.animate()?.scaleX(.7f)?.scaleY(.7f)?.setDuration(500)?.start();
        }


}

活动课

class SwappingAppsActivity : AppCompatActivity(),
SwappingAppsAdapter.OnItemClickListener{
    private lateinit var swappingAppsBinding: ActivitySwappingAppsBinding
    private var swappingAppsAdapter: SwappingAppsAdapter? = null
    private lateinit var selectedApp: SwappingItems


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        swappingAppsBinding = ActivitySwappingAppsBinding.inflate(layoutInflater)
        setContentView(swappingAppsBinding.root)

        val swappingAppViewModel = ViewModelProvider(this)[SwappingAppViewModel::class.java]
        swappingAppViewModel.generateSwapItems()

        swappingAppViewModel.swapList.observe(this@SwappingAppsActivity) {
            swappingAppsAdapter = SwappingAppsAdapter(this@SwappingAppsActivity, it)
            swappingAppsBinding.rvSwappingApps.layoutManager = LinearLayoutManager(
                this@SwappingAppsActivity,
                LinearLayoutManager.HORIZONTAL,
                false
            )
            swappingAppsBinding.rvSwappingApps.adapter = swappingAppsAdapter

        }

            val movingElement = swappingAppsBinding.rvSwappingApps
            val swipeServices = SwipeServices()

            //part where i call the swap service
            swipeServices.initialize(rootLayout =movingElement,movingElement,
                arrayListOf(SwipeServices.SwipeDirection.bottomToTop), 50)



    }

    override fun onItemClick(view: View, swappingItems: SwappingItems) {

        if (swappingAppsAdapter?.getItemList()?.indexOf(selectedApp)==2){

            val movingElement = swappingAppsBinding.rvSwappingApps

            SwipeServices().cancel()
        }

    }
}

None

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

OnTouch 和 OnClick 冲突:指定为非 null 的参数为 null:方法 kotlin.jvm.internal.Intrinsics.checkNotNullParameter,参数 e1 的相关文章

随机推荐

  • 编程语言中的协变和逆变有什么区别? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 谁能解释一下协变和逆变的概念 编程语言理论 协方差非常简单 最好从某个集合类的角度来思考List 我们可以参数化 the List具有
  • Xamarin 表单按钮没有边框问题

    我尝试在视图中呈现可点击项目的列表 我想添加一个带有图像和白色边框的按钮 第一个 我发现 StackLayout ViewCell 中的按钮无法渲染边框
  • 如何同时使用 2 个范围滑块?

    我想使用 2 个范围滑块同时根据年龄和身高过滤表中的数据 我已经使用以下方法实现了 2 个范围滑块 年龄和身高 d3 slider js https github com MasterMaps d3 slider and a dc data
  • 身份验证超时无法正常工作

    我有一个 ASP NET 4 网站 我在 web Config 中将身份验证超时设置为 100 分钟 但是当用户使用网站时 网站甚至在 3 分钟后突然提示登录 下面的代码是我的 web Config 文件
  • 寻找成熟的 M-Tree 实现 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个成熟的 java M Tree 实现 甚至任何 M Tree 实现 除了我找到的唯一实现 http en wikipedia
  • Mockito.anyString() 在 Kotlin 中因 NPE 崩溃

    我正在使用浓缩咖啡 我想为内容解析器创建一个模拟响应 当我使用时 when context activity contentResolver query ArgumentMatchers isA Uri class java Argumen
  • famo.us:如何处理 textbox.onchange 事件

    我在famo us 大学上没有看到任何带有文本输入的教程 如何将文本框表面添加到我的应用程序并处理onchange events 有点难以理解你想要做什么 但是让我们从你的第一个问题开始 目前没有 onchange 处理程序选项 因此如果您
  • 为什么 JavaScript 中的数字是不可变的?

    我在这里阅读了问题和答案 javascript 数字 不可变 https stackoverflow com questions 8248568 javascript numbers immutable 但我还不清楚为什么数字 原始类型 是
  • 如何处理重复事件中的 DST 和 TZ?

    dateutil rrule 是否支持夏令时和夏令时 需要类似于 iCalendar RRULE 的东西 如果不是 如何解决这个问题 安排重复事件和 DST 偏移量更改 Imports gt gt gt from django utils
  • 编组无法从 Go 访问的 C 对象

    有一些 C 对象 例如联合体 包含位域的结构体以及其对齐方式与 Go 的 ABI 不同的结构体 无法从 Go 访问 其中一些结构无法更改为可从 Go 代码访问 因为它们是现有库的 API 的一部分 因此 要将这些对象编组到 Go 结构中 我
  • 测试自定义 AuthorizationAttribute 时抛出 NullReferenceException

    我看了一下 如何进行单元测试来测试检查请求标头的方法 https stackoverflow com questions 9263457 how do i make a unit test to test a method that che
  • Docker 卷挂载不存在

    我在 OS X 上运行 Docker 1 11 并试图找出本地卷的写入位置 我通过运行创建了一个 Docker 卷docker volume create name mysql 然后我跑了docker volume inspect mysq
  • Facebook 政策:我的应用程序可以自动将故事发布到我的 Facebook 流吗?

    根据Facebook 平台政策 http developers facebook com policy 您不得预先填写 user message 通过a发送的参数或内容 扩展权限 例如状态 更新或注释 除非用户 之前生成的内容 工作流程 这
  • 仅使用 VBA 宏将可见行的值从一个工作簿复制到新工作簿中

    我有一些宏可以将工作表 2 从现有工作簿复制到新工作簿 此代码按其应有的方式工作 只是存在不应在新工作簿上显示的隐藏行 这是我编写的代码 用于复制工作表并仅粘贴其值 Dim Output As Workbook Dim FileName A
  • PostgreSQL regexp_replace 与匹配的表达式

    我正在使用 PostgreSQLregexp replace函数来转义字符串中的方括号 括号和反斜杠 以便我可以将该字符串用作正则表达式模式本身 在使用该字符串之前还对该字符串进行了其他操作 但它们超出了本问题的范围 想法是替换 with
  • 如何强制消费者读取kafka中的特定分区

    我有一个应用程序 用于从 1 个 Kafka 生产者生成的 URL 流中下载特定的 Web 内容 我创建了一个有 5 个分区的主题 有 5 个 kafka 消费者 但网页下载的超时时间为 60 秒 当下载其中一个 URL 时 服务器会假设消
  • 插入图片到Excel VBA,方法图片失败

    尝试制作一个在 Excel 中逐步插入 3 个图像的宏 一张工作表 图片 包含 A 列第 1 3 行中图像的 URL 另一个工作表 输出 应该水平输出图像 Sub testinsertpix Dim i As Integer Dim lin
  • CSS 在标签字段中居中对齐

    我正在尝试显示类似这样的内容 Please treat the blue line and black line as the border 其中图像描述文字应该是水平的位于剩余空间的中心 但是我不知道应该应用什么CSS 这是我的小提琴 h
  • 仅使用 RSA 和 AES 构建 openssl

    我正在一个项目中使用 libcrypto a OpenSSL 默认情况下 所有算法都在 libcrypto a 下可用 对于该项目 我只需要 RSA AES 和 SHA 如何仅使用这些算法构建 libcrypto a 如果您通过运行以下命令
  • OnTouch 和 OnClick 冲突:指定为非 null 的参数为 null:方法 kotlin.jvm.internal.Intrinsics.checkNotNullParameter,参数 e1

    我有一个 Recyclerview 允许用户通过向上滑动来更改比例 我为此使用gestureDetector 和 onFling 这工作正常 但是用户应该能够单击 recyclerView 的项目 我通过创建一个界面来做到这一点Recycl