为什么吐司不被叫

时间:2019-05-21 08:57:44

标签: android kotlin android-toast

我在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不会被调用。

4 个答案:

答案 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()
}

我希望这会有所帮助。.编码愉快!