Как вернуть значение из обратного вызова

#kotlin #callback

#kotlin #обратный вызов

Вопрос:

Я использую this:https://github.com/yuriy-budiyev/code-scanner/blob/master/src/main/java/com/budiyev/android/codescanner/DecodeCallback.java

Я создаю приложение для сканирования штрих-кода, я хочу, чтобы после сканирования штрих-кода я хотел вернуть его значение другим забавным

Мой код:

 var barcodeScanned  = ""
override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    startScanning() 
}

private fun startScanning() {
codeScanner.decodeCallback = DecodeCallback {
            runOnUiThread {
                barcodeScanned = it.text
            }}}

//Here I want to take the barcodeScanned 
private fun callAPI() {
        println("barcode $barcodeScanned") //this is empty
    }
  

Ответ №1:

 var barcodeScanned  = ""

override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    startScanning() 
}

private fun startScanning() {
codeScanner.decodeCallback = DecodeCallback {
            runOnUiThread {
                barcodeScanned = it.text
            }}}

//Here I want to take the barcodeScanned 
private fun callAPI() {
        println("barcode $barcodeScanned") 
    }
  

или вы можете передать его как параметр вместо этого

 override fun onCreate(savedInstanceState: Bundle?) { 
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    startScanning() 
}

private fun startScanning() {
codeScanner.decodeCallback = DecodeCallback {
            runOnUiThread {
                callAPI(it.text)
            }}}

//Here I want to take the barcodeScanned 
private fun callAPI(result: String) {
        println("barcode $result") 
    }