在查看寻呼机后,Android MVVM片段按钮单击不起作用

问题描述 投票:0回答:1

我有一个活动,其中包含三个片段,这些片段可以通过ViewPager进行导航。起始片段具有一个带有click事件的按钮。当片段首次出现时,该按钮有效,但是当我滑动至最后一个片段并返回至主要片段时,该按钮不起作用。它只用按钮就能做到这一点……我知道这可能是温柔的人大声笑了!

按钮布局

        <Button
            android:id="@+id/login_button"
            android:layout_width="match_parent"
            android:textSize="@dimen/body_text_size"
            android:layout_height="wrap_content"
            android:layout_marginStart="@dimen/layout_margin"
            android:layout_marginEnd="@dimen/layout_margin"
            android:layout_marginBottom="@dimen/layout_margin"
            android:focusable="false"
            android:background="@drawable/button_pressed_state"
            android:text="@string/login"
            android:textColor="@color/white"
            android:textStyle="bold" />

发生它的片段代码。

        override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
        ): View? {
            binding = DataBindingUtil.inflate(inflater, R.layout.login_fragment, container, false)
            viewModel = ViewModelProvider(this).get(LoginViewModel::class.java)
            loginView = binding.root
            initClickableLinks()
            launch {
                initButtonClick()
            }
            return loginView
        }


        private suspend fun initButtonClick(): String? {
            val edittextSize = binding.emailAddressEditText.textSize
            val textviewSize = binding.forgetPassTextview.textSize
            var message: String? = ""
            binding.loginButton.setOnClickListener {
                fun onClick(view: View?) {
                    try {
                        viewModel.setEmailAddress(binding.emailAddressEditText.text.toString())
                        viewModel.setPassword(binding.passwordEditText.text.toString())
                        //if nothing is entered this will do nothing but update text
                        val invalidString = requireActivity().getString(R.string.invalid_combo)
                        binding.authTextView.text = ""
                        if (binding.emailAddressEditText.text.toString()
                                .isBlank() || binding.passwordEditText.text.toString().isBlank()
                        ) {
                            binding.authTextView.text = invalidString
                            //exits listener because authentication failed
    //                        return@setOnClickListener
                        }
                        binding.progressBar.visibility = View.VISIBLE
                        //background thread for IO
                        GlobalScope.launch(Dispatchers.IO) {
                            //call api

                            //UI Thread
                            withContext(Dispatchers.Main) {
                                val mess = viewModel.getMessage()
                                if (mess.equals("Successful")) {
                                    val intent = Intent(activity, MemberActivity::class.java)
                                    val loginfo = viewModel.getLoginResult().toString()
                                    intent.putExtra("loginIno", loginfo)
                                    activity?.startActivity(intent)
                                } else {
                                    binding.authTextView.text = mess
                                    Toast.makeText(activity!!.applicationContext, mess, Toast.LENGTH_LONG).show()
                                }
                                binding.progressBar.visibility = View.GONE
                            }
                        }
                    } catch (ex: Exception) {
                        println(ex)
                    }
                }
            }
            return message
        }

这仅在按钮上发生

android kotlin android-viewpager android-button
1个回答
0
投票

在某种程度上,我发现以下内容仅被调用一次:

        launch {
            initButtonClick()
        }

[删除启动并将专用暂挂功能更改为仍异步调用登录服务的专用功能解决了该问题,现在多次调用该功能。

© www.soinside.com 2019 - 2024. All rights reserved.