我有 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" />
无论我在此处输入文本输入代码,它都会在单击按钮时打印为空。 我有什么遗漏的地方吗?
您的布局采用
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
。