结算页面、设置页面
This commit is contained in:
@@ -0,0 +1,128 @@
|
||||
package com.sw.dualscreen.activity
|
||||
|
||||
import android.view.View
|
||||
import androidx.activity.viewModels
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.sw.dualscreen.R
|
||||
import com.sw.dualscreen.activity.fragment.CashPayFragment
|
||||
import com.sw.dualscreen.activity.fragment.FacePayFragment
|
||||
import com.sw.dualscreen.activity.fragment.NumberPayFragment
|
||||
import com.sw.dualscreen.activity.fragment.PayResultFragment
|
||||
import com.sw.dualscreen.activity.fragment.QrCodePayFragment
|
||||
import com.sw.dualscreen.databinding.ActivityPayBinding
|
||||
import com.sw.dualscreen.model.response.FoodInfo
|
||||
import com.sw.dualscreen.viewmodel.BaseViewModel
|
||||
import com.sw.dualscreen.viewmodel.UserViewModel
|
||||
|
||||
class PayActivity : BaseActivity<ActivityPayBinding>() {
|
||||
|
||||
companion object {
|
||||
|
||||
const val FOOD_INFO = "foodInfo"
|
||||
const val TAG_PAY_QR_CODE = "tagPayQrCode"
|
||||
const val TAG_PAY_CASH = "tagPayCash"
|
||||
const val TAG_PAY_NUMBER = "tagPayNumber"
|
||||
const val TAG_PAY_FACE = "tagPayFace"
|
||||
const val TAG_PAY_RESULT = "tagPayResult"
|
||||
}
|
||||
|
||||
private val viewModel by viewModels<UserViewModel>()
|
||||
|
||||
override fun getViewModel(): BaseViewModel {
|
||||
return viewModel
|
||||
}
|
||||
|
||||
override fun inflateViewBinding(): ActivityPayBinding {
|
||||
return ActivityPayBinding.inflate(layoutInflater)
|
||||
}
|
||||
|
||||
var foodInfo: FoodInfo? = null
|
||||
|
||||
private var qrCodePayFragment: QrCodePayFragment? = null
|
||||
private var cashPayFragment: CashPayFragment? = null
|
||||
private var numberPayFragment: NumberPayFragment? = null
|
||||
private var facePayFragment: FacePayFragment? = null
|
||||
private var payResultFragment: PayResultFragment? = null
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
override fun initialize() {
|
||||
super.initialize()
|
||||
foodInfo = intent.getParcelableExtra(FOOD_INFO)
|
||||
binding.tvFoodName.text = foodInfo?.foodName
|
||||
binding.include.ivPageBack.setOnClickListener { finish() }
|
||||
binding.include.tvPageTitle.text = "下单结算"
|
||||
val payQrCodeClickListener = View.OnClickListener {
|
||||
if (qrCodePayFragment == null) {
|
||||
qrCodePayFragment = QrCodePayFragment()
|
||||
}
|
||||
addFragment(qrCodePayFragment!!, TAG_PAY_QR_CODE)
|
||||
switchButton(true, false, false, false)
|
||||
}
|
||||
binding.btnPayQrCode.setOnClickListener(payQrCodeClickListener)
|
||||
binding.btnPayCash.setOnClickListener {
|
||||
if (cashPayFragment == null) {
|
||||
cashPayFragment = CashPayFragment()
|
||||
}
|
||||
addFragment(cashPayFragment!!, TAG_PAY_CASH)
|
||||
switchButton(false, true, false, false)
|
||||
}
|
||||
binding.btnPayNumber.setOnClickListener {
|
||||
if (numberPayFragment == null) {
|
||||
numberPayFragment = NumberPayFragment()
|
||||
}
|
||||
addFragment(numberPayFragment!!, TAG_PAY_NUMBER)
|
||||
switchButton(false, false, true, false)
|
||||
}
|
||||
binding.btnPayFace.setOnClickListener {
|
||||
showFacePay()
|
||||
}
|
||||
|
||||
payQrCodeClickListener.onClick(binding.btnPayQrCode)
|
||||
}
|
||||
|
||||
private fun switchButton(vararg arr: Boolean) {
|
||||
binding.btnPayQrCode.isChecked = arr[0]
|
||||
binding.btnPayCash.isChecked = arr[1]
|
||||
binding.btnPayNumber.isChecked = arr[2]
|
||||
binding.btnPayFace.isChecked = arr[3]
|
||||
}
|
||||
|
||||
fun showFacePay() {
|
||||
if (facePayFragment == null) {
|
||||
facePayFragment = FacePayFragment()
|
||||
}
|
||||
addFragment(facePayFragment!!, TAG_PAY_FACE)
|
||||
switchButton(false, false, false, true)
|
||||
}
|
||||
|
||||
private fun addFragment(currentFragment: Fragment, tag: String) {
|
||||
runCatching {
|
||||
supportFragmentManager.beginTransaction().apply {
|
||||
val existFragment = supportFragmentManager.findFragmentByTag(tag)
|
||||
if (existFragment == null) {
|
||||
add(R.id.fragmentContainerView, currentFragment, tag)
|
||||
}
|
||||
val fragments = supportFragmentManager.fragments
|
||||
fragments.forEach {
|
||||
it?.let { fragment ->
|
||||
if (fragment != currentFragment) {
|
||||
hide(fragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
show(currentFragment)
|
||||
commitAllowingStateLoss()
|
||||
}
|
||||
}.onFailure {
|
||||
it.printStackTrace()
|
||||
}
|
||||
}
|
||||
|
||||
fun showPayResult() {
|
||||
if (payResultFragment == null) {
|
||||
payResultFragment = PayResultFragment()
|
||||
}
|
||||
addFragment(payResultFragment!!, TAG_PAY_RESULT)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user