我在If和Else语句中都具有Toast,If语句中的所有代码均已执行,但Toast除外。其他语句可以正常工作。
问题主要是If语句中的Toast。
我尝试将Toast从If语句中移开,并且一切正常,尝试从If语句中取出finish(),但Toast仍然不会被调用。
if (filterCharSet1 in scannedID || filterCharSet2 in scannedID || filterCharSet3 in scannedID || filterCharSet4 in scannedID || filterCharSet5 in scannedID ) {
Log.d("checkcheck","contain")
finish()
Toast.makeText(this@ScannerActivity , "Error", Toast.LENGTH_SHORT).show()
}else{
Log.d("checkcheck","noContain")
finish()
Toast.makeText(this@ScannerActivity , "Ok", Toast.LENGTH_SHORT).show()
}
Else语句中的Toast可以正常工作,但是由于某种原因,If语句中的Toast不会被调用。
答案 0 :(得分:1)
在烤面包后首先调用 finish(),然后尝试 runonuithread
this@ScannerActivity.runOnUiThread(java.lang.Runnable {
Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show()
})
答案 1 :(得分:0)
您可以尝试使用applicationContext代替活动。活动,因为在调用finish()之后,上下文可能不再可用
答案 2 :(得分:0)
如果调用finish(),则会破坏该活动,从而使this @ ScannerActivity无效。
答案 3 :(得分:0)
由于finish
关键字破坏了活动,因此没有显示您的吐司。只需在敬酒之后致电finish
;您的代码应如下所示:
if (filterCharSet1 in scannedID || filterCharSet2 in scannedID || filterCharSet3 in scannedID || filterCharSet4 in scannedID || filterCharSet5 in scannedID ) {
Log.d("checkcheck","contain")
Toast.makeText(this@ScannerActivity , "Error", Toast.LENGTH_SHORT).show()
finish()
}else{
Log.d("checkcheck","noContain")
Toast.makeText(this@ScannerActivity , "Ok", Toast.LENGTH_SHORT).show()
finish()
}
我希望这会有所帮助。.编码愉快!