Android Studio报错:Function invocation 'LayoutInflater(...)' expected求助
解决LayoutInflater调用报错:Function invocation 'LayoutInflater(...)' expected
报错原因很明确:你在调用ActivityMainBinding.inflate()和ActivityAddBusinessCardBinding.inflate()时,传入的LayoutInflater是类本身,而方法需要的是LayoutInflater的实例对象,不是类引用。
修改方案
直接用LayoutInflater.from(this)获取当前上下文对应的LayoutInflater实例即可,修改后的代码如下:
MainActivity 修改后代码
package com.example.appcartodevisita.ui import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.LayoutInflater import com.example.appcartodevisita.databinding.ActivityMainBinding class MainActivity : AppCompatActivity() { private val binding by lazy { ActivityMainBinding.inflate(LayoutInflater.from(this)) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) insertListener() } }
AddBusinessCardActivity 修改后代码
package com.example.appcartodevisita.ui import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.LayoutInflater import com.example.appcartodevisita.databinding.ActivityAdicionarCartaoBinding class AddBusinessCardActivity : AppCompatActivity() { private val binding by lazy { ActivityAdicionarCartaoBinding.inflate(LayoutInflater.from(this)) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(binding.root) } }
补充说明
获取LayoutInflater实例还有另一种写法,效果完全一致:
val inflater = getSystemService(LAYOUT_INFLATER_SERVICE) as LayoutInflater
但LayoutInflater.from(this)是更简洁的推荐写法,它内部已经封装了getSystemService的调用逻辑。
内容的提问来源于stack exchange,提问作者João Gabriel
相关产品推荐
相关产品推荐

