为什么 Toast 没有被调用

Why Toast not getting called

我在If和Else语句中都有Toast,If语句中的所有代码都执行了,除了Toast。 Else 语句工作没有问题。

问题主要出在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 没有被调用。

您可以尝试使用 applicationContext 而不是 activity。 Activity,因为上下文在调用 finish() 后可能不再可用

如果您调用 finish(),则会破坏 activity,这会使 this@ScannerActivity 无效。

您的 toast 没有显示,因为 finish 关键字破坏了 activity。只需在 Toast 之后调用 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()
}

希望对您有所帮助.. 编码愉快!

先调用finish()然后尝试runonuithread

this@ScannerActivity.runOnUiThread(java.lang.Runnable {
          Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show()
        })