kotlin - resolve error in DataBindingUtil.setContentView()
我在
[Type inference failed: Not enough information to infer parameter T in fun setContentView(p0: Activity, p1: Int): T!
Please specify it explicitly.
我的代码:
1 2 3 4 5 | override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.activity_home) var binding = DataBindingUtil.setContentView(this, R.layout.activity_home) } |
任何人都可以帮助我解决此错误。我已经完成了清理,并且
请让我知道其他建议。
使用:
1 | var binding : ActivityHomeBinding = DataBindingUtil.setContentView(this, R.layout.activity_home) |
创建一个这样的绑定对象。
1 2 | val binding: ActivityMainBinding = DataBindingUtil.setContentView( this, R.layout.activity_main) |
您必须提及"活动绑定"类型。我有Main活动,因此绑定类型为
应该是这样的:
1 2 3 4 5 6 | override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home) var binding : ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_home) } |
您还必须通过简单地将所有ui包装在布局标记中来在视图的XML文件中启用绑定。
只需转到文件:
它应该看起来像下面的代码-
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?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> |
将代码修改为:
1 2 | var binding : ActivityMainBinding = DataBindingUtil.setContentView(this,R.layout.activity_home) |
然后创建"文件->使缓存无效/重新启动"
顺便说一句,清理构建,无效和重启并不是Android Studio #JustKidding中唯一的解决方案:)
关于您面临的错误,实际上您需要指定视图:
作为ListView到
1 2 3 4 5 | private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = DataBindingUtil.setContentView(this@MainActivity, R.layout.activity_main) } |
在Kotlin,一切最初看起来都很怪异。请参考上面的代码来解决此问题,即使错误仍未解决,也请检查以下类型转换。
1 | binding = DataBindingUtil.setContentView<ActivityMainBinding>(this@MainActivity, R.layout.activity_main) |
仅供参考:名称ActivityMainBinding来自布局xml的名称。如果将其命名为" activity_main",则它将为" ActivityMainBinding"