android - 无法从 Android 中的 EditText 检索输入文本
问题描述
我无法从 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 的值始终保持为""。这段代码有什么问题?
解决方案
我认为点击回调 ins´t 采用您的正确实例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
}
}
注意:也许你必须调用Toast.makeText
with runOnUiMainThread()
。自从我这样做以来已经有一段时间了。
this.runOnUiThread {
Toast.makeText(context,text1,Toast.LENGTH_SHORT).show() //<-- shows empty string
}
推荐阅读
- azure - 将 Office 365 作为 Azure 云上的 SaaS 访问列入白名单
- facebook - 发现了一些冲突的依赖关系。修改了以下依赖版本:
- c# - 当我第二次实例化预制件时,为什么会出现错误?
- .net-core - 如何清除以前的 Signal R Web Socket 连接?
- azure - 如何在 azure 中首先运行任务后运行 ansible 角色
- node.js - 每天在特定时间运行查询
- sql - 如何在 Postgres 中完成溢出数学运算?
- python - ValueError:输入张量必须至少具有 5 级(depthwise_conv2d)
- hazelcast - Hazelcast 大容量最佳实践
- mysql - 使用 groupby 和 union all 时有没有办法返回不存在的值?