如何使用 kotlin 在另一个页面 textView 中显示 Toast.makeText 结果

How to display Toast.makeText result in another page textView using kotlin

//这是我使用kotlin的扫描器条码代码

覆盖有趣的 receiveDetections(检测:Detector.Detections){

            val barcodes = detections.detectedItems
            if (barcodes.size() == 1) {
                scannedValue = barcodes.valueAt(0).rawValue
                runOnUiThread {
                    cameraSource.stop()
                    Toast.makeText(this@InsertStockInActivity, "value- $scannedValue", Toast.LENGTH_SHORT).show()
                    finish()
                }
            }else
            {
                Toast.makeText(this@InsertStockInActivity, "value- else", Toast.LENGTH_SHORT).show()

            }
        }

//这是我的输入页

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

    binding = FragmentInputStockInBinding.inflate(inflater, container, false)
    binding.btnScanBarcode.setOnClickListener{ nav.navigate(R.id.insertStockInActivity)}

    return binding.root
}[enter image description here][1]

我认为你应该将 toast 文本提取为变量并将其传递到另一个页面(我假设你的意思是另一个 fragment/activity 或另一个屏幕)


  private lateinit var toastText:String
  ...

  if (barcodes.size() == 1) {
    ...     
    toastText = scannedValue      
    ...
  } else {
    toastText = "value- else"
  }

  Toast.makeText(this@InsertStockInActivity, toastText , Toast.LENGTH_SHORT).show()

}

并通过 Intentsafe-argstoastText 传递到另一个页面,如果您使用的是 Jetpack Navigation

您可以使用视图模型、实时数据或其他(静态)对象将结果保存在变量中。同样,您可以在另一个 class 中创建一个 show toast 函数,并只传递您所在的片段或 activity 的上下文。例如,片段上下文可以是 requireContext()。

 fun showToast(context: Context?, message: String) {
    Toast.makeText(context, message, Toast.LENGTH_SHORT).show()
}