无法获取片段中EditText的文本-Android Kotlin
我有一个无法获取片段中EditText的文本-Android Kotlin,android,android-fragments,android-edittext,Android,Android Fragments,Android Edittext,我有一个片段,有2个编辑文本,2个文本视图和1个按钮。我试图将文本输入到第一个EditText(inputask1),但始终收到null 我尝试了OnCreateView()和OnViewCreated(),但没有任何效果。谢谢大家! 这是片段布局: <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http:
片段
,有2个编辑文本
,2个文本视图
和1个按钮
。我试图将文本输入到第一个EditText
(inputask1),但始终收到null
我尝试了OnCreateView()
和OnViewCreated()
,但没有任何效果。谢谢大家!
这是片段布局:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_task_list">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Task 1"
android:id="@+id/inputTask1"
android:inputType="text"
android:layout_marginTop="8dp"
app:layout_constraintTop_toTopOf="parent" android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@+id/inputTask2"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Task 2"
android:id="@+id/inputTask2"
android:inputType="text"
android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/inputTask1" android:layout_marginEnd="8dp"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
app:layout_constraintStart_toStartOf="parent" android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@+id/saveButton"/>
<Button
android:text="Save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/saveButton" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/inputTask2" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@+id/viewTask1"/>
<TextView
android:text="Task 1 name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/viewTask1" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/saveButton" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp" android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@+id/viewTask2"/>
<TextView
android:text="Task 2 name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/viewTask2"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginTop="8dp"
app:layout_constraintTop_toBottomOf="@+id/viewTask1" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="8dp" app:layout_constraintStart_toStartOf="parent"
android:layout_marginStart="8dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
您正在将名为
view
的变量弄混。在OnClickListener
中,视图
是正在单击的视图
,它将是保存按钮
,并且它不包含您的编辑文本
,因此findViewById()
返回空值。最简单的修复方法可能是重命名OnClickListener
的视图
;e、 g.,setOnClickListener{v->
。它很有效。非常感谢!
package com.example.repetodo
import android.content.Context
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.fragment.app.Fragment
import kotlinx.android.synthetic.main.fragment_tasklist.view.*
class TaskListFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
var view: View = inflater.inflate(R.layout.fragment_tasklist, container, false)
view.saveButton.setOnClickListener{view ->
Log.i("TaskListFragment","Button is clicked")
val editText = view.findViewById<EditText>(R.id.inputTask1)
Log.i("TaskListFragment","the EditText ${editText}")
Log.i("TaskListFragment","the text ${view.inputTask1?.text}")
//Toast.makeText(context, "Button is clicked", Toast.LENGTH_LONG)
}
return view
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
}
I/TaskListFragment: Button is clicked
I/TaskListFragment: the EditText null
I/TaskListFragment: the text null