Почему тост не называют - PullRequest
2 голосов
/ 21 мая 2019

У меня есть Toast в операторе If и Else, весь код в операторе If был выполнен, за исключением Toast. Остальное утверждение работает без проблем.

Проблема в основном в тосте в операторе If.

Я пытался убрать тост из оператора If и все работает нормально, попытался убрать финиш () из оператора If, и тост все равно не вызывался.

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

Оператор Toast в Else работает без проблем, но по какой-то причине оператор Toast in If просто не вызывается.

Ответы [ 4 ]

1 голос
/ 21 мая 2019

Первый звонок финиш () после тоста и попытка runonuithread

this@ScannerActivity.runOnUiThread(java.lang.Runnable {
          Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_SHORT).show()
        })
0 голосов
/ 21 мая 2019

Если вы вызываете finish (), вы уничтожаете действие, что делает @ ScannerActivity недействительным.

0 голосов
/ 21 мая 2019

Ваш тост не отображается, потому что ключевое слово 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()
}

Надеюсь, это поможет .. Веселого кодирования!

0 голосов
/ 21 мая 2019

Вы можете попробовать использовать applicationContext вместо активности.Активность, так как контекст может быть недоступен после вызова finish ()

...