我在DataBindingUtil.setContentView()
中遇到问题。它显示以下错误。
[类型推断失败:没有足够的信息来推断有趣的setContentView中的参数T(p0:活动,p1:Int):T! 请明确指定。
我的代码:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// setContentView(R.layout.activity_home) var binding =
DataBindingUtil.setContentView(this, R.layout.activity_home)
}
任何人都可以帮助我解决此错误。我已经做了干净的工作,Rebuild(Invalidate and Restart)
也做了。
请让我知道其他建议。
答案 0 :(得分:0)
顺便说一句,清理构建,无效和重启并不是Android Studio #JustKidding中唯一的解决方案:)
关于您所面临的错误,您实际上需要指定视图:
val listViewEmployees = findViewById(R.id.listViewEmployees)
作为ListView到
val listViewEmployees = findViewById<ListView>(R.id.listViewEmployees)
答案 1 :(得分:0)
创建一个这样的绑定对象。
val binding: ActivityMainBinding = DataBindingUtil.setContentView(
this, R.layout.activity_main)
您必须提及活动绑定类型。我有Main活动,因此绑定类型为ActivityMainBinding
。这就是你所错过的。
应该是这样的:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
var binding : ActivityMainBinding =
DataBindingUtil.setContentView(this, R.layout.activity_home)
}
答案 2 :(得分:0)
使用:
var binding : ActivityHomeBinding = DataBindingUtil.setContentView(this, R.layout.activity_home)
DataBindingUtil.setContentView
返回作为参数传入的特定布局文件的绑定。
答案 3 :(得分:0)
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this@MainActivity, R.layout.activity_main)
}
在科特林,最初一切似乎都很奇怪。请参考上面的代码来解决此问题,即使错误仍未解决,也请检查下面的类型转换。
binding = DataBindingUtil.setContentView<ActivityMainBinding>(this@MainActivity, R.layout.activity_main)
答案 4 :(得分:0)
将代码修改为:
var binding : ActivityMainBinding =
DataBindingUtil.setContentView(this,R.layout.activity_home)
然后创建“文件->使缓存无效/重新启动”
答案 5 :(得分:0)
您还必须通过简单地将所有ui包装在布局标记中来在视图的XML文件中启用绑定。
只需转到文件:R.layout.activity_home
它应该看起来像下面的代码-
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.SurveyListActivity">
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
答案 6 :(得分:0)
在您项目的布局文件中,即 ativity_home.xml
确保您在 <layout>
标签中包含了您的布局可能是约束、线性、相对等。
此外,将所有命名空间添加到布局标记。
例如改变
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.auth.SignUpActivity">
到
<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
>
<data>
.
.
.
<data/>
<Scroll View
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.auth.SignUpActivity">