refactor(activity): 统一使用 onBackPressedDispatcher.addCallback 替代 onBackPressed
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -15,10 +15,12 @@ import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||
/**
|
||||
* 菜品识别结果弹窗,继承 BottomSheetDialog 确保只初始化一次
|
||||
* @param activity 宿主 Activity
|
||||
* @param onDismiss 弹窗关闭时的额外回调(可选)
|
||||
* @param onItemSelected 用户点击某一菜品时的回调
|
||||
*/
|
||||
class FoodRecognizeDialog(
|
||||
private val activity: BaseActivity,
|
||||
private val onDismiss: (() -> Unit)? = null,
|
||||
private val onItemSelected: (item: CookFoodGoodsEntity) -> Unit
|
||||
) : BottomSheetDialog(activity, R.style.BottomSheet) {
|
||||
|
||||
@@ -39,7 +41,7 @@ class FoodRecognizeDialog(
|
||||
setContentView(binding.root)
|
||||
setCancelable(true)
|
||||
behavior.skipCollapsed = false
|
||||
setOnDismissListener { activity.hideStatusBar() }
|
||||
setOnDismissListener { activity.hideStatusBar(); onDismiss?.invoke() }
|
||||
binding.recyclerView.run {
|
||||
layoutManager = GridLayoutManager(activity, 2, GridLayoutManager.VERTICAL, false)
|
||||
adapter = this@FoodRecognizeDialog.adapter
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import androidx.activity.addCallback
|
||||
import androidx.activity.viewModels
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
@@ -75,6 +76,7 @@ class DishSamplingActivity : BaseActivity() {
|
||||
binding.tvDishPartWeight.text = "${weight}"
|
||||
}
|
||||
})
|
||||
addBackKeyListener()
|
||||
}
|
||||
|
||||
private fun setTitleBar() {
|
||||
@@ -91,7 +93,7 @@ class DishSamplingActivity : BaseActivity() {
|
||||
}, backAction = {
|
||||
it.visible()
|
||||
it.setOnClickListener {
|
||||
onBackPressed()
|
||||
onBackPressedDispatcher.onBackPressed()
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -110,19 +112,21 @@ class DishSamplingActivity : BaseActivity() {
|
||||
appViewModel.getCookFoodList(cookMode = 1) { action(it) }
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
@SuppressLint("GestureBackNavigation")
|
||||
@Deprecated("Deprecated in Java")
|
||||
override fun onBackPressed() {
|
||||
if (list.isEmpty().not()) {
|
||||
//说明有新增的食材
|
||||
saveDataRemindDialog()
|
||||
return
|
||||
/**
|
||||
* 监听返回键
|
||||
*/
|
||||
fun addBackKeyListener() {
|
||||
onBackPressedDispatcher.addCallback(this) {
|
||||
if (list.isEmpty().not()) {
|
||||
//说明有新增的食材
|
||||
saveDataRemindDialog()
|
||||
return@addCallback
|
||||
}
|
||||
if (pageFrom == HOME) {
|
||||
startActivity<SamplingListActivity>()
|
||||
}
|
||||
onBackPressedDispatcher.onBackPressed()
|
||||
}
|
||||
if (pageFrom == HOME) {
|
||||
startActivity<SamplingListActivity>()
|
||||
}
|
||||
super.onBackPressed()
|
||||
}
|
||||
|
||||
private fun saveDataRemindDialog() {
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.shuwei.dish.match.ui
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import androidx.activity.addCallback
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.shuwei.dish.match.R
|
||||
@@ -48,6 +49,7 @@ class HomeActivity : BaseActivity() {
|
||||
BaseApp.canteenId = "0"
|
||||
}
|
||||
}
|
||||
onBackPressedDispatcher.addCallback(this) {}
|
||||
// binding.radioGroup.check(R.id.radioZk)
|
||||
initRecyclerView()
|
||||
// HttpUtil.getAppToken()
|
||||
@@ -164,12 +166,4 @@ class HomeActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
@SuppressLint("GestureBackNavigation", "MissingSuperCall")
|
||||
override fun onBackPressed() {
|
||||
//super.onBackPressed()
|
||||
//当前页面不允许返回
|
||||
//dialog = toast("不允许返回操作")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -7,7 +7,7 @@ import android.os.Bundle
|
||||
import android.os.SystemClock
|
||||
import android.view.KeyEvent
|
||||
import android.view.animation.RotateAnimation
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.addCallback
|
||||
import androidx.core.graphics.toColorInt
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
@@ -247,11 +247,9 @@ class InitActivity : BaseActivity() {
|
||||
}
|
||||
|
||||
private fun addBackKeyListener() {
|
||||
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
// 禁用返回键,不执行任何操作
|
||||
}
|
||||
})
|
||||
onBackPressedDispatcher.addCallback(this) {
|
||||
// 禁用返回键,不执行任何操作
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import com.shuwei.dish.match.entity.CookFoodEntity
|
||||
import com.shuwei.dish.match.entity.CookFoodGoodsEntity
|
||||
import com.shuwei.dish.match.entity.FoodRecord
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.addCallback
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.shuwei.dish.match.databinding.LayoutCameraPreviewBinding
|
||||
import com.shuwei.dish.match.objbox.FoodModule
|
||||
@@ -77,12 +78,13 @@ class PrepareCookActivity : BaseActivity() {
|
||||
}
|
||||
}, backAction = {
|
||||
it.setOnClickListener {
|
||||
onBackPressed()
|
||||
onBackPressedDispatcher.onBackPressed()
|
||||
}
|
||||
})
|
||||
food = intent.extras?.getSerializable(FOOD_ITEM) as FoodRecord?
|
||||
binding.tvDishName.text = food?.foodName ?: ""
|
||||
addViewClickListener()
|
||||
addBackKeyListener()
|
||||
|
||||
initCamera(binding.flCameraContainer)
|
||||
initRecyclerView()
|
||||
@@ -303,14 +305,11 @@ class PrepareCookActivity : BaseActivity() {
|
||||
private var firstReqSize = 0
|
||||
private val list = mutableListOf<CookFoodGoodsEntity>()
|
||||
private val recognizeDialog by lazy {
|
||||
FoodRecognizeDialog(this) { item ->
|
||||
// TODO: 处理识别结果选中
|
||||
}
|
||||
.apply {
|
||||
setOnDismissListener {
|
||||
isTakingPhoto.set(false)
|
||||
}
|
||||
}
|
||||
FoodRecognizeDialog(
|
||||
activity = this,
|
||||
onDismiss = { isTakingPhoto.set(false) },
|
||||
onItemSelected = foodSelectCallback
|
||||
)
|
||||
}
|
||||
private val dishPartAdapter by lazy {
|
||||
DishPartAdapter(list).apply {
|
||||
@@ -413,28 +412,18 @@ class PrepareCookActivity : BaseActivity() {
|
||||
cameraUtils.setPreviewController(previewBinding.previewView)
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
@SuppressLint("GestureBackNavigation")
|
||||
@Deprecated("Deprecated in Java")
|
||||
override fun onBackPressed() {
|
||||
val count = list.count { !it.isOriginalData }
|
||||
if (count > 0) {
|
||||
//说明有新增或者设置重量
|
||||
saveDataRemindDialog()
|
||||
return
|
||||
/**
|
||||
* 注册返回键监听,替代已废弃的 onBackPressed()
|
||||
*/
|
||||
private fun addBackKeyListener() {
|
||||
onBackPressedDispatcher.addCallback(this) {
|
||||
val count = list.count { !it.isOriginalData }
|
||||
if (count > 0) {
|
||||
saveDataRemindDialog()
|
||||
return@addCallback
|
||||
}
|
||||
finish()
|
||||
}
|
||||
// if (list.size > firstReqSize) {
|
||||
// //说明有新增的食材
|
||||
// saveDataRemindDialog()
|
||||
// return
|
||||
// }
|
||||
// val filterResult = list.firstOrNull { (it.useWeight ?: 0.toDouble()) > 0.toDouble() }
|
||||
// if (filterResult != null) {
|
||||
// //说明有称重的数据
|
||||
// saveDataRemindDialog()
|
||||
// return
|
||||
// }
|
||||
super.onBackPressed()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import androidx.activity.addCallback
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.ItemTouchHelper
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
@@ -47,6 +48,7 @@ class SamplingListActivity : BaseActivity() {
|
||||
initRecyclerView()
|
||||
addViewListener()
|
||||
requestData(true)
|
||||
onBackPressedDispatcher.addCallback(this) { }
|
||||
}
|
||||
|
||||
|
||||
@@ -95,14 +97,6 @@ class SamplingListActivity : BaseActivity() {
|
||||
refreshPage(isCooking)
|
||||
}
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
@SuppressLint("GestureBackNavigation", "MissingSuperCall")
|
||||
override fun onBackPressed() {
|
||||
//super.onBackPressed()
|
||||
//当前页面不允许返回
|
||||
//dialog = toast("不允许返回操作")
|
||||
}
|
||||
|
||||
private var list: MutableList<FoodRecord> = mutableListOf()
|
||||
private val dishAdapter by lazy {
|
||||
SamplingAdapter(list = list).apply {
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
package com.shuwei.dish.match.ui
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.activity.viewModels
|
||||
import androidx.activity.addCallback
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import com.shuwei.dish.match.R
|
||||
import com.shuwei.dish.match.base.BaseActivity
|
||||
@@ -13,8 +12,6 @@ import com.shuwei.dish.match.db.AppRepository
|
||||
import com.shuwei.dish.match.dialog.DialogTool
|
||||
import com.shuwei.dish.match.entity.CookFoodEntity
|
||||
import com.shuwei.dish.match.entity.FoodRecord
|
||||
import com.shuwei.dish.match.entity.FoodRecordBean
|
||||
import com.shuwei.dish.match.net.NetViewModel
|
||||
import com.shuwei.dish.match.ui.fragment.DishListFragment
|
||||
import com.shuwei.dish.match.utils.KeyboardUtil
|
||||
import com.shuwei.dish.match.utils.ext.addOnActionSearchListener
|
||||
@@ -24,7 +21,6 @@ import com.shuwei.dish.match.utils.ext.toast
|
||||
import com.shuwei.dish.match.utils.ext.visible
|
||||
import com.shuwei.dish.match.viewmodel.AppViewModel
|
||||
import com.shuwei.dish.match.viewmodel.factory.AppFactory
|
||||
import kotlin.getValue
|
||||
|
||||
class SelectDishActivity : BaseActivity() {
|
||||
|
||||
@@ -67,6 +63,7 @@ class SelectDishActivity : BaseActivity() {
|
||||
initViewModel()
|
||||
addViewListener()
|
||||
loadFragment()
|
||||
onBackPressedDispatcher.addCallback(this) {}
|
||||
}
|
||||
|
||||
private fun initViewModel() {
|
||||
@@ -186,14 +183,6 @@ class SelectDishActivity : BaseActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
@SuppressLint("GestureBackNavigation", "MissingSuperCall")
|
||||
override fun onBackPressed() {
|
||||
//super.onBackPressed()
|
||||
//当前页面不允许返回
|
||||
// dialog = toast("不允许返回操作")
|
||||
}
|
||||
|
||||
private var isVisible = false
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
@@ -6,7 +6,7 @@ import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.addCallback
|
||||
import com.shuwei.dish.match.base.BaseActivity
|
||||
import com.shuwei.dish.match.base.GlobalData
|
||||
import com.shuwei.dish.match.databinding.ActivitySlaveBinding
|
||||
@@ -55,11 +55,9 @@ class SlaveActivity : BaseActivity() {
|
||||
* 禁用返回键,防止退回 InitActivity 后重复打开本页
|
||||
*/
|
||||
private fun addBackKeyListener() {
|
||||
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
// 禁用返回键,不执行任何操作
|
||||
}
|
||||
})
|
||||
onBackPressedDispatcher.addCallback(this) {
|
||||
// 禁用返回键,不执行任何操作
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user