android - 无法从 Android 中的 EditText 检索输入文本

标签 android kotlin android-edittext kotlin-android-extensions

我无法从 Android 中的 EditText 检索输入文本。 这是我的代码:

package com.example.fragments2

import ...
import com.example.fragments2.databinding.FragmentLoginPageBinding
class LoginPage : Fragment()
{

    lateinit var loginId:EditText
    lateinit var password:EditText
    lateinit var loginButton:Button

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View?

        {
            var binding:FragmentLoginPageBinding = DataBindingUtil.inflate(inflater,R.layout.fragment_login_page,container,false)
            var view  = binding.root
            loginId = view.findViewById(R.id.edittext_userid)
            password = view.findViewById(R.id.edittext_password)
            loginButton = view.findViewById(R.id.button_login)

            val text1: String = loginId.text.toString()
            val text2:String = password.text.toString()

        loginButton.setOnClickListener {
               Navigation.findNavController(it).navigate(LoginPageDirections.actionLoginPageToMainPage(text1,text2))
               Toast.makeText(context,text1,Toast.LENGTH_SHORT).show() //<-- shows empty string
           }

            return view
        }


}

Text1、Text2 的值始终保持为 "" 。 这段代码有什么问题?

最佳答案

我认为点击回调不会采用您的 TextViews 的正确实例。尝试在点击按钮中获取这些值:

class LoginPage : Fragment()
{

    lateinit var loginId:EditText
    lateinit var password:EditText
    lateinit var loginButton:Button

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View?

        {
            var binding:FragmentLoginPageBinding = DataBindingUtil.inflate(inflater,R.layout.fragment_login_page,container,false)
            var view  = binding.root
            loginId = view.findViewById(R.id.edittext_userid)
            password = view.findViewById(R.id.edittext_password)
            loginButton = view.findViewById(R.id.button_login)

            loginButton.setOnClickListener {
                val text1: String = loginId.text.toString()
                val text2: String = password.text.toString()
                Navigation.findNavController(it).navigate(LoginPageDirections.actionLoginPageToMainPage(text1,text2))
                Toast.makeText(context,text1,Toast.LENGTH_SHORT).show() //<-- shows empty string
           }

           return view
        }
}

注意:也许您必须使用runOnUiMainThread() 调用Toast.makeText。我已经有一段时间没有这样做了。

this.runOnUiThread {
     Toast.makeText(context,text1,Toast.LENGTH_SHORT).show() //<-- shows empty string
}

关于android - 无法从 Android 中的 EditText 检索输入文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56383198/

相关文章:

android - 测试 Rx Java 间隔

android-layout - 此 View 不受垂直方向限制。在运行时它会跳到左边,除非你添加垂直约束

Android - 在 EditText 中处理 "Enter"

安卓 native OGLES2 : esLoadProgram not declared

android - 奇怪的行为 - VideoViewer fragment 无法与 MediaController 一起使用

android - 如何判断特定的 TTS 引擎是否被选中(启用)?

java - 如果 ViewModel 类的 minifyEnabled 为 true,则出现 RuntimeException

spring - Autowire FeignClient 跨 maven 项目

安卓,Firestore : GlideException: Failed to load resource

android - Android 中的 EditText 值