[英]Creating intermediate progress bar in Kotlin
我想創建一個中間進度條,當我的任務完成時,這個進度條就會消失。
代碼:
class MyZarinpal:AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_myzarinpal)
val button = findViewById<Button>(R.id.btn_zarinpal)
val progressBar: ProgressBar = progressBar1
verificationpayment()
button.setOnClickListener {
//progress bar visiblity will be visible
// do some back stuff // in here my payment()
// and after loading complitliy the progress bar Visibility will be gone
}
}
private fun mypayment() {
val purchase = ZarinPal.getPurchase(this)
val payment: PaymentRequest = ZarinPal.getPaymentRequest()
payment.merchantID = getString(R.string.ZarinpalMerchantId)
payment.amount = getString(R.string.increase_ten_thousend_toman).toLong()
payment.isZarinGateEnable(true)
payment.description = "your test payment"
payment.setCallbackURL("return://myapp")
purchase.startPayment(payment) { status, authority, paymentGatewayUri, intent ->
if (status == 100) {
startActivity(intent)
} else {
Toast.makeText(
this,
"خطایی در برقراری ارتباط با درگاه رخ داده ، لطفا دوباره امتحان کنید",
Toast.LENGTH_LONG
).show()
}
}
}
private fun verificationpayment() {
val text = findViewById<TextView>(R.id.text_status)
val data: Uri? = intent.data
val getpurchase = ZarinPal.getPurchase(this)
getpurchase.verificationPayment(
data
) { isPaymentSuccess, refID, paymentRequest ->
if (isPaymentSuccess) {
Toast.makeText(this, "افزایش موجودی شما با موفقیت انجام شد ", Toast.LENGTH_LONG)
.show()
text.text = "شماره خرید شما :$refID"
} else {
Toast.makeText(
this,
"در عملیات پرداخت خطایی رخ داده ، لطفا دوباره سعی کنید",
Toast.LENGTH_LONG
).show()
}
}
}
}
我想要的是,當單擊按鈕時,進度條視圖是可見的,並且一旦任務(在此處轉到網頁)完成,進度條視圖就消失了。
我試過這個:
button.setonclicklistener {
progressbar.visibility = View.visible
mypayment() // this is my task that will be run on background
// after loading the progress bar visibilty gone
progressbar.visibilty = View.Gone
但是這段代碼不能正常工作,甚至不顯示進度條。 它直接轉到網頁。
您在調用mypayment()
后progressBar.visibilty = View.GONE
調用progressBar.visibilty = View.GONE
,但該函數異步運行。 這意味着您在mypayment()
完成之前隱藏進度條。 只有在從 API 獲得回調后,才應調用progressBar.visibilty = View.GONE
:
val getpurchase = ZarinPal.getPurchase(this)
getpurchase.verificationPayment(
data
) { isPaymentSuccess, refID, paymentRequest ->
progressBar.visibilty = View.GONE
if (isPaymentSuccess) {
Toast.makeText(this, "افزایش موجودی شما با موفقیت انجام شد ", Toast.LENGTH_LONG)
.show()
text.text = "شماره خرید شما :$refID"
} else {
Toast.makeText(
this,
"در عملیات پرداخت خطایی رخ داده ، لطفا دوباره سعی کنید",
Toast.LENGTH_LONG
).show()
}
}
順便說一下, mypayment()
不是一個正確的函數名。 您應該使用操作/動作命名函數。 例如, mypayment()
應該是makePayment()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.