【问题标题】:I have a search bar, after searching item in search bar, if I click back button the app closes我有一个搜索栏,在搜索栏中搜索项目后,如果我单击返回按钮,应用程序将关闭
【发布时间】:2021-07-14 07:29:02
【问题描述】:

我有一个搜索栏,在搜索栏中搜索后,如果我单击返回按钮,应用程序将关闭。我想要的是,如果我在搜索栏中搜索后单击返回按钮,则必须显示默认列表。

   activity?.onBackPressedDispatcher?.addCallback(this, object : OnBackPressedCallback(true) {
        override fun handleOnBackPressed() {
            if(){

            }else{
                isEnabled = false
                activity?.onBackPressed()
            }
        }
    })

searchBar.addTextChangedListener(object : TextWatcher {
            override fun afterTextChanged(p0: Editable?) {
            }
            override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
            }
            override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {

                val listData = arrayListOf<Restaurant>()
                for (i in 0 until restaurantInfoList.size) {
                    if (restaurantInfoList[i].restaurantName.toLowerCase()
                            .contains(searchBar.text.toString().toLowerCase()) ||
                        restaurantInfoList[i].restaurantPrice.contains(searchBar.text.toString()) ||
                        restaurantInfoList[i].restaurantRating.contains(searchBar.text.toString())
                    ) {
                        listData.add(restaurantInfoList[i])
                    }
                }
                recyclerDashboard.adapter = RestaurantRecycleAdapter(activity as Context, listData)
                (recyclerDashboard.adapter as RestaurantRecycleAdapter).notifyDataSetChanged()
            }
            
        }
        )

【问题讨论】:

  • 在活动中覆盖onBackPressed(),并通过检查是否应用搜索来执行适当的操作。您可能还想了解onBackPressedDispatcher
  • 好的,给requireActivity().onBackPressedDispatcher.addCallback(...)添加回调。
  • 我已经编辑了程序,条件是当我在搜索栏中点击返回按钮时应该显示默认列表。如何提及条件
  • 检查搜索栏是否有焦点。
  • 从上面的代码中,如果searchBar 有任何文字,内容就会被过滤掉。如果搜索框为空,则内容为完整/原创。

标签: android xml android-studio kotlin


【解决方案1】:

应用程序正在关闭,因为您调用了 Activity 的 onbackPressed() 方法。除非您自己处理回调,否则它将关闭。 在您的 backpressed 方法中,检查您的搜索栏是否为空并在适配器中生成默认列表。

【讨论】:

    【解决方案2】:

    在其他条件下删除此行

     activity?.onBackPressed()
    

    【讨论】:

    • 列表仍然折叠
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多