首页 > 解决方案 > 如何将变量值放入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()
    }

标签: javaandroidxmlkotlinoop

解决方案


推荐阅读