java - 如何将变量值放入kotlin中的另一个函数
问题描述
我在我的第一个函数中为 lateinit 变量分配了一个值,我想在我的第二个函数中访问相同的值,但给了我一个错误UninitializedPropertyAccessException。我知道这是因为范围可变。我的问题是如何访问这个值?
这是我的后期初始化变量
lateinit var area:String
lateinit var zipcode:String
这是我的第一个功能
fun showSearchDialog(view: View) {
val dialog = context?.let { Dialog(it) }
dialog?.requestWindowFeature(Window.FEATURE_NO_TITLE)
dialog?.setCancelable(true)
dialog?.setContentView(R.layout.alertdialog_search_layout)
//Initializing the views of the dialog.
val postalCode: TextInputEditText? = dialog?.findViewById(R.id.et_zip_code)
val sliderArea: Slider? = dialog?.findViewById(R.id.slider_area)
val searchButton: Button? = dialog?.findViewById(R.id.search_btn)
searchButton?.setOnClickListener {
if (sliderArea != null) {
area = sliderArea.value.toString()
}
zipcode = postalCode?.text.toString()
val postCodeUpperCase = postalCode?.text.toString().toUpperCase(Locale.ROOT)
if (zipcode.isEmpty()) {
postalCode?.error = "Please enter your post code"
postalCode?.requestFocus()
} else if (isValidZipCode(postCodeUpperCase)) {
postalCode?.error = "Please enter valid post code"
postalCode?.requestFocus()
} else {
if (isNetworkAvailable(requireContext())) {
viewModel.getSkipFilterList(zipcode, area)
Toast.makeText(context, "Valid postal code is = $zipcode", Toast.LENGTH_LONG).show()
}
else {
showAlertDialog(getString(R.string.no_internet))
}
}
//dialog.dismiss()
}
dialog?.show()
这是我的第二个功能
override fun inOnCreateView(mRootView: ViewGroup, savedInstanceState: Bundle?) {
val homeActivity = activity as HomeNavHostActivity
homeActivity.toolbar_id?.visibility = View.VISIBLE
homeActivity.toolbar_search_icon_id.visibility = View.VISIBLE
homeActivity.toolbar_add_icon_id.visibility = View.GONE
homeActivity.home_view_layout?.visibility = View.VISIBLE
homeActivity.bottom_layout?.visibility = View.VISIBLE
homeActivity.toolbar_title_tv.text = "Home"
homeActivity.toolbar_search_icon_id.setOnClickListener() {
showSearchDialog(mRootView)
}
homeActivity.cancel_text.setOnClickListener() {
homeActivity.search_layout.visibility = View.GONE
homeActivity.toolbar_title_tv.visibility = View.VISIBLE
homeActivity.search_view?.setQuery("", false)
homeActivity.search_view?.clearFocus()
}
val dialogHelper by inject<MaterialDialogHelper>()
setupProgressDialog(viewModel.showHideProgressDialog, dialogHelper)
if (isNetworkAvailable(requireContext())) {
viewModel.getSkipFilterList(zipcode, area)
// viewModel.getSkipHomeData()
} else {
showAlertDialog(getString(R.string.no_internet))
}
attachViewModel()
}
解决方案
推荐阅读
- javascript - 传递超过一定长度的对象数组时,AJAX POST 数据到 ASP.NET Core 中的 MVC 控制器始终为空
- c# - asp.netcore 中的 Automapper 用于请求和响应
- postgresql - 在 PostgreSQL 12 中,如果查询包含在子表中,通过继承创建分区是否会提高查询性能?
- sql - 使用过程 oracle 运行时合并更新不起作用
- sql - 从 cols 列表中查找表列表
- c# - 编辑和删除 asp:commandfield 在 gridview 转换为 asp:templatefield 后停止工作
- sql-server - 向 SQL Azure 中的现有表添加标识列/主键
- java - 深度优先搜索递归调用导致 StackOverflow 错误
- html - 使自动生成的 flexbox 行的背景颜色为 100% 宽度
- verilog - Verilog 测试台错误多路复用 4x1 使用 EDAPlayground