错误“不能使用提供的参数调用以下函数:”与 Toast

Posted

技术标签:

【中文标题】错误“不能使用提供的参数调用以下函数:”与 Toast【英文标题】:Error "None of the following functions can be called with the arguments supplied:" with Toast 【发布时间】:2020-02-07 00:33:46 【问题描述】:

我想创建一个代码来单击 RecyclerView 的项目。我从网上找了一个,但是一直报这个错误:

以下函数都不能使用提供的参数调用:

public open fun makeText(p0: Context!, p1: CharSequence!, p2: Int): Toast!在 android.widget.Toast 中定义

public open fun makeText(p0: Context!, p1: Int, p2: Int): Toast!在 android.widget.Toast 中定义

这是我的代码:

override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        recyclerView.layoutManager = LinearLayoutManager(this, RecyclerView.VERTICAL, false)
        val users = ArrayList<User>()

        val adapter = CustomAdapter(users)

        recyclerView.adapter = adapter

        recyclerView.addOnItemClickListener(object : OnItemClickListener 
            override fun onItemClicked(position: Int, view: View) 
                Toast.makeText(this, "Clicked on  " + users.get(position).name, Toast.LENGTH_LONG).show()
            
        )


    

    interface OnItemClickListener 
        fun onItemClicked(position: Int, view: View)
    

    fun RecyclerView.addOnItemClickListener(onClickListener: OnItemClickListener) 
        this.addOnChildAttachStateChangeListener(object : RecyclerView.OnChildAttachStateChangeListener 
            override fun onChildViewDetachedFromWindow(view: View) 
                view.setOnClickListener(null)
            

            override fun onChildViewAttachedToWindow(view: View) 
                view.setOnClickListener 
                    val holder = getChildViewHolder(view)
                    onClickListener.onItemClicked(holder.adapterPosition, view)
                
            
        )
    

如何修复该错误消息?

【问题讨论】:

【参考方案1】:
Toast.makeText(this@YOUR_ACTIVITY_NAME, "Clicked on  " + users.get(position).name, Toast.LENGTH_LONG).show()

【讨论】:

成功了,谢谢!你能解释一下为什么吗?我见过 Toast 只使用“this”。 当您在输入中设置 addOnItemClickListener 时,您正在传递一个抽象类的实例,因此当您调用“this”时,您指的是内部类实例(对象:OnItemClickListener),那么您必须说“ this" 指的是活动类而不是 OnItemClickListener。 知道了。非常感谢。【参考方案2】:
//In Activity use: 
Toast.makeText(this@YOUR_ACTIVITY_NAME, "your message", Toast.LENGTH_LONG).show()
    
//In Fragments use: 
Toast.makeText(requireActivity(), "your message", Toast.LENGTH_LONG).show()
 
Your problem will be solved...

【讨论】:

requireActivity() 帮助了

以上是关于错误“不能使用提供的参数调用以下函数:”与 Toast的主要内容,如果未能解决你的问题,请参考以下文章

TOA定位算法的FPGA实现

itoa銆乴toa

lvs fullnat+ECMPrealserver 安装toa模块

迭代求解最优化问题TOA定位——最小二乘问题高斯牛顿法

基于到达时间(TOA)的室内定位(/无线传感器网络定位)——极大似然估计ML

数字信号处理相关函数应用 ( 时差估计 | TOA 时差估计使用场景 | TDOA 时差估计使用场景 )