簡體   English   中英

在 Kotlin 中創建中間進度條

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM