Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Kotlin数据绑定问题类型不匹配_Android_Kotlin_Data Binding - Fatal编程技术网

Android Kotlin数据绑定问题类型不匹配

Android 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

我正试图在我的小kotlin项目中用android实现数据绑定。但将viewmodel指定给数据绑定时出错

在这个小项目中我有三个班 1.用户-数据模型类 2.ActivityMainViewModel-视图模型类 3.MainActivity—将实现数据绑定的类

但是在MainActivity.kt中,我在将viewmodel设置为binding时出错

User.kt

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