我的 observableFIeld 显示空值是否有原因?

问题描述 投票:0回答:1

我有 MainActivity,其中我将 editTextValue 声明为 ObservableField 我想在单击按钮时使用 editTextValue.get() 获取它并将其传递给另一个函数。但我总是感到空虚。

class MainActivity : AppCompatActivity() {
var editTextValue = ObservableField<String>("")

private lateinit var binding: ActivityMainBinding

private lateinit var chatViewModel: ChatViewModel

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

    setContentView(binding.root)
    
            
        sendButton.setOnClickListener {
        println(editTextValue.get().toString()+"ABC")

        if(editTextValue.get()!!.isEmpty()){
            println("WHY IS EMPTY")
            return@setOnClickListener
        }

}

并且在我的 xml 布局中,我定义了一个变量活动并将 editText 的文本设置为,

 <?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="activity"
                type="com.example.ashishgpt.MainActivity" />
        </data>
        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#1C1B1F"
            tools:context=".MainActivity">
    
            <androidx.appcompat.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="409dp"
                android:layout_height="wrap_content"
                android:background="#333333"
                android:minHeight="?attr/actionBarSize"
                android:theme="?attr/actionBarTheme"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                app:title="AshishGpt"
                app:titleTextColor="#FFFFFF" />
    
            <EditText
                android:id="@+id/editTextText"
                android:layout_width="364dp"
                android:layout_height="53dp"
                android:layout_marginStart="1dp"
                android:layout_marginEnd="3dp"
                android:layout_marginBottom="2dp"
                android:background="#333333"
                android:ems="10"
                android:hint="Enter your prompt here"
                android:text="@={activity.editTextValue}"
                android:inputType="text"
                android:paddingStart="10dp"
                android:textColor="#FBFBFB"
                android:textColorHint="#D1CACA"
                app:layout_constraintBottom_toBottomOf="parent"
                app:layout_constraintEnd_toStartOf="@+id/imageButton"
                app:layout_constraintStart_toStartOf="parent" />
        

无论我在此处输入文本输入代码,它都会在单击按钮时打印为空。 我有什么遗漏的地方吗?

android kotlin data-binding observable
1个回答
0
投票

您的布局采用

Activity
作为您尚未传递的变量。查看有关绑定数据的文档。

binding = DataBindingUtil.setContentView(
    this, R.layout.activity_main)

setContentView(binding.root)

binding.activity = this // Set the "activity" variable on the binding

正如您在 xml 布局文件中声明的那样:

<data>
        <variable
            name="activity"
            type="com.example.ashishgpt.MainActivity" />
    </data>

附注- 您可能不想将活动引用传递给绑定。您应该传递一些代表视图状态的 POJO 或

data class

© www.soinside.com 2019 - 2024. All rights reserved.