【发布时间】:2019-10-03 14:48:35
【问题描述】:
使用谷歌手机版扫描二维码,分两步扫描两个二维码:
第一步:点击button1获取第一个二维码信息,然后在MainActivity的Textview1上显示。
第二步:点击button2获取第二个二维码信息,然后显示在MainActivity的Textview2上。
我的问题是我只能将二维码的值单独传递给我的 MainActivity,这意味着在我获得第一个二维码然后单击 button2 扫描第二个二维码后,我的 textview1 将丢失我的第一个值。
我的 MainActivity 从两个 Qrcode Activity 中获取值:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btn_2.setOnClickListener {
val intent = Intent(this, FirstQrcodeActivity::class.java)
startActivity(intent)
}
btn_1.setOnClickListener {
val box_intent = Intent(this, SecondQrcodeActivity::class.java)
startActivity(box_intent)
}
}
override fun onStart() {
super.onStart()
val First_qrcode= intent?.getStringExtra("First_Qrcode")
val Second_qrcode= intent?.getStringExtra("Second_Qrcode")
if(First_qrcode!=null){
text_view1.text = First_qrcode
}
if(Second_qrcode!=null){
text_view2.text= Second_qrcode
}
}
First QRcode Activity 中的主代码,将值传递给 MainActivity:
val builder = AlertDialog.Builder(this)
svBarcode = findViewById(R.id.sv_Firstbarcode)
detector = BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.ALL_FORMATS).build()
detector.setProcessor(object : Detector.Processor<Barcode> {
@SuppressLint("MissingPermission")
override fun receiveDetections(p0: Detector.Detections<Barcode>?) {
val barcodes = p0?.detectedItems
if (barcodes!!.size() > 0) {
builder.setMessage("barcodes.valueAt(0).displayValue)
builder.setOnCancelListener{
val intent = Intent(this@FirstQrcodeActivity, MainActivity::class.java)
intent.putExtra("First_Qrcode",barcodes.valueAt(0).displayValue)
startActivity(intent)
}
taskHandler.post(runnable)
}
}
})
Second QRcode Activity 中的主代码,将值传递给 MainActivity:
val builder = AlertDialog.Builder(this)
svBarcode = findViewById(R.id.sv_Secondbarcode)
detector = BarcodeDetector.Builder(this).setBarcodeFormats(Barcode.ALL_FORMATS).build()
detector.setProcessor(object : Detector.Processor<Barcode> {
@SuppressLint("MissingPermission")
override fun receiveDetections(p0: Detector.Detections<Barcode>?) {
val barcodes = p0?.detectedItems
if (barcodes!!.size() > 0) {
builder.setMessage("barcodes.valueAt(0).displayValue)
builder.setOnCancelListener{
val intent = Intent(this@SecondQrcodeActivity, MainActivity::class.java)
intent.putExtra("Second_Qrcode",barcodes.valueAt(0).displayValue)
startActivity(intent)
}
taskHandler.post(runnable)
}
}
})
使用这些功能,我可以成功扫描二维码并获取值,但我不能通过两步将两个值都放入两个文本视图中。
一旦我点击另一个按钮扫描第二个二维码并成功扫描,我的 Textview 中的第一个值将变为 Null。请帮帮我。
【问题讨论】:
-
发布您的 MainActivity
-
请检查,我已经更新,MainActivity 只包含 onCreateand 和 onStart 函数。
-
查看下面的答案