【问题标题】:Cant resolve an Issue in Data binding in Android studio using kotlin无法使用 kotlin 解决 Android Studio 中的数据绑定问题
【发布时间】:2021-06-12 07:31:30
【问题描述】:

我正在尝试使用数据绑定将数据对象绑定到我的布局。但我收到类型不匹配的错误。而且我不明白原因,因为我是数据绑定的新手。 我的代码很简单,希望有人能指导我理解我的错误。

class MainActivity : AppCompatActivity() {

private lateinit var binding: ActivityMainBinding
private var myName : MyName = MyName("Ahmed Rabee")

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = DataBindingUtil.setContentView(this, R.layout.activity_main)

    binding.myName.text = myName.name
  }

数据类

data class MyName(var name: String = "" , var nickName: String = "")

布局

<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="myName"
            type="com.example.aboutme.MyName" />
    </data>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/my_name"
        style="@style/name_style"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="@{myName.name}"
         />

这是我遇到的错误,我完全不明白为什么它说类型不匹配。

我试图将它切换到这个 sn-p 代码,但它不起作用。因为它没有在布局上显示任何数据。

    binding.myName.text = myName.name

希望有人可以指导我。我的错在哪里

【问题讨论】:

    标签: android visual-studio kotlin data-binding


    【解决方案1】:

    使用 onCreate() 中的 MyName 对象初始化布局 myName 变量。请尝试对您的代码进行以下更改。

    class MainActivity : AppCompatActivity() {
    
     private lateinit var binding: ActivityMainBinding
     private var myName : MyName = MyName("Ahmed Rabee")
    
     override fun onCreate(savedInstanceState: Bundle?) {
     super.onCreate(savedInstanceState)
     binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
    
     binding.myName = myName
     }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 2016-08-14
      • 2016-01-14
      • 2019-11-20
      • 2019-09-27
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      相关资源
      最近更新 更多