Android Kotlin数据绑定问题类型不匹配
我正试图在我的小kotlin项目中用android实现数据绑定。但将viewmodel指定给数据绑定时出错 在这个小项目中我有三个班 1.用户-数据模型类 2.ActivityMainViewModel-视图模型类 3.MainActivity—将实现数据绑定的类 但是在MainActivity.kt中,我在将viewmodel设置为binding时出错 User.ktAndroid Kotlin数据绑定问题类型不匹配,android,kotlin,data-binding,Android,Kotlin,Data Binding,我正试图在我的小kotlin项目中用android实现数据绑定。但将viewmodel指定给数据绑定时出错 在这个小项目中我有三个班 1.用户-数据模型类 2.ActivityMainViewModel-视图模型类 3.MainActivity—将实现数据绑定的类 但是在MainActivity.kt中,我在将viewmodel设置为binding时出错 User.kt class User() { var emailId: String= "" var password: St
class User() {
var emailId: String= ""
var password: String= ""
constructor(emailId: String, password: String) : this() {
this.emailId = emailId
this.password = password
}
}
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
var myviewmodel= MainActivityViewModel()
val userObj = User("abc@gmail.com","123344")
myviewmodel.setUser(userObj)
binding.viewModel = myviewmodel
}
}
MainActivityViewModel.kt
class MainActivityViewModel() : ViewModel() {
val userObj = User()
fun setUser(user: User){
userObj.emailId = user.emailId
userObj.password = user.password
}
}
activity_main.xml
<?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>
<variable
name="viewModel"
type="testing.justrade.databindingissue.ViewModel.MainActivityViewModel"
/>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".View.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</LinearLayout>
</layout>
我已经附上了错误的屏幕截图在打击链接-
您不能使用中定义的CamelCase命名包 包名以小写形式编写,以避免与类或接口的名称冲突 尤其是在使用Android数据绑定库时,这是相关的。在您的情况下,
ViewModel
被解释为一个类,因此ViewModel.MainActivityViewModel
被解释为它的一个静态内部类
您必须将软件包重命名为
viewmodel
,才能使其正常工作。您不能使用中定义的CamelCase命名软件包
包名以小写形式编写,以避免与类或接口的名称冲突
尤其是在使用Android数据绑定库时,这是相关的。在您的情况下,ViewModel
被解释为一个类,因此ViewModel.MainActivityViewModel
被解释为它的一个静态内部类
您必须将包重命名为
viewmodel
才能使其正常工作。提供您的xml文件。请将您的错误添加到问题中。@jeelvankhee我有added@tynn我在问题中添加了错误。您是否在不同的包目录中有多个MainAcitivityViewModel
声明?请提供您的xml文件。请把你的错误加在问题上。@jeelvankhee我有added@tynn我在问题中添加了错误您是否在不同的包目录中有多个MainAcitivityViewModel
声明?
E:\--------------------------/ MainActivity.kt: (21, 17): Cannot access class 'ViewModel.MainActivityViewModel'. Check your module classpath for missing or conflicting dependencies
Type mismatch: inferred type is testing.justrade.databindingissue.ViewModel.MainActivityViewModel but ViewModel.MainActivityViewModel? was expected