Android Toast显示不出来

时间:2022-11-01 08:43:01
最近在做项目时,遇到一个问题,就是Toast弹不出来。Toast代码如下:
Toast.makeText(m.getApplicationContext(), msg, Toast.LENGTH_LONG).show();

这个问题只在华为3C手机上出现,在别的手机上都可以正常弹出显示。
debug跟代码时,在华为手机上发现这行代码也走到了,context不为空,msg也不为空。

请叫大神们,有木有遇到过类似情形的?问题原因在哪儿,怎么解决的?多谢了!

44 个解决方案

#1


Android Toast显示不出来没遇到过哟。

#2


是不是context 是 application的原因?

#3


你是在哪里调用的弹Toast呢

#4


引用 3 楼 lilidejing 的回复:
你是在哪里调用的弹Toast呢


post到主线程的一个独立线程。

#5


你把Context换成当前的试试呢? 

#6


引用 4 楼 love_bluesky 的回复:
Quote: 引用 3 楼 lilidejing 的回复:

你是在哪里调用的弹Toast呢


post到主线程的一个独立线程。
必须在UI线程调

#7


引用 6 楼 www100204 的回复:
Quote: 引用 4 楼 love_bluesky 的回复:

Quote: 引用 3 楼 lilidejing 的回复:

你是在哪里调用的弹Toast呢


post到主线程的一个独立线程。
必须在UI线程调

这个问题只在华为3C手机上出现,在别的手机上都可以正常弹出显示,这个怎么解释呢?

#8


以前遇到过,被华为手机自带的隐私控制器将通知消息给屏蔽了

#9


引用 8 楼 nickDeLove 的回复:
以前遇到过,被华为手机自带的隐私控制器将通知消息给屏蔽了


其他手机都OK,就是在在荣耀3C上通知toast不显示,你在设置或者安全管理里面找找看

#10


不要用post线程,创建个主线程的handler,发消息就行了。至于只有华为手机有,估计是手机rom定制问题。还是按照大众方法走吧。

#11


引用 7 楼 lionfresh 的回复:
Quote: 引用 6 楼 www100204 的回复:

Quote: 引用 4 楼 love_bluesky 的回复:

Quote: 引用 3 楼 lilidejing 的回复:

你是在哪里调用的弹Toast呢


post到主线程的一个独立线程。
必须在UI线程调

这个问题只在华为3C手机上出现,在别的手机上都可以正常弹出显示,这个怎么解释呢?
那我解释不了,我手上就是华为3c

#12


runOnUiThread(new Runnable() {

@Override
public void run() {
toastSomethingLong("111111");

}
});

#13


多换几个手机试试,表示没遇到过这种问题..

#14


一般toast显示不出有2个原因:
1、在非UI线程中执行,建议使用handler显示提示
2、没有执行到,这是逻辑错误

#15


操蛋 handler 处理 代码据对执行 用自己封装的弹出框 和系统的都不行  只有3c这样

#16


 不是代码的问题,是手机的问题,很明显了。还讨论啥?

#17


要整个兼容的东东了

#18


你看下是不是在设置应用程序里面没有勾选你那个程序“显示通知”那项

#19


是不是在允许XX应用发送通知的时候你点拒绝了?如果你点拒绝了之后再次调试你就要按楼上的方法处理了~

#20


我也遇到,也是华为手机,其他手机都没问题。。。操蛋,都不知道华为干什么了,,,吧  taost 都整没了

#21


应该是Rom的问题吧,跟代码关系不大

#22


有些手机可以设置隐藏toast提示,检查下手机设置

#23


找到解决方法了。
代码没有问题
手机问题  --设置--通知管理-拦截规则- 找到对应的应用-允许。 搞定

#24


引用 18 楼 wuwuyeah 的回复:
你看下是不是在设置应用程序里面没有勾选你那个程序“显示通知”那项


就是这个问题。我日

#25


华为消息设置的问题,重新设置一下看行不。

#26


引用 14 楼 Mailbomb 的回复:
一般toast显示不出有2个原因:
1、在非UI线程中执行,建议使用handler显示提示
2、没有执行到,这是逻辑错误

在某些手机比如小米上是可以关闭这个toast提示的

#27


引用 23 楼 zzudhj 的回复:
找到解决方法了。
代码没有问题
手机问题  --设置--通知管理-拦截规则- 找到对应的应用-允许。 搞定


就是这个解决办法

#28


根据18楼的回复,解决了问题!

#29


我也是遇到这个问题,公司的测试机就只有荣耀3C弹不出toast,应该是手机的问题。代码是正确的

#30


设置通知管理里面把消息禁止了。打开就行了。

#31


刚也遇到了这个问题,设置》通知》你的应用自动为禁止了  选为允许就好了

#32


只有华为手机这么奇葩,设置--》通知---》找到应用,设置为允许,就okay了,我记得IOS上有这个功能。

#33


看完之后,我想默默地赞一个什么也不说

#34


华为的rom就是那么艹0,去设置应用程序管理那里把显示通知开了就行了

#35


这个啊,,我也不会啊

#36


确实可以在设置里面找到通知设置允许、禁止

#37


虽然此贴已经年代久远,不过因为遇到新的问题,将我的经验一并分享,帮助后来人。
如果使用高于23的sdk版本编译,
Toast.makeText(m.getApplicationContext(), msg, Toast.LENGTH_LONG).show();
使用getApplicationContext()一样不能弹出toast。
将compileSdkVersion 22降到24以下即可。

#38


不用这么纠结,只是华为3C一个奇特的设置导致的。
试试"设置--通知管理-拦截规则- 找到对应的应用-允许"
Android Toast显示不出来

#39


设置里 关闭对该应用的推送屏蔽

#40


引用 20 楼 ylj266 的回复:
我也遇到,也是华为手机,其他手机都没问题。。。操蛋,都不知道华为干什么了,,,吧  taost 都整没了

meizu手机也有这个问题

#41


如果老是不出了,把手机上面的应用卸载了重新安装就好了。

#42


魅族手机,华为手机的app调试次数多了,就会有这样的情况,把应用卸载掉,重新安装。问题就好了。我搞了一个晚上啊。

#43


引用 23 楼 zzudhj 的回复:
找到解决方法了。
代码没有问题
手机问题  --设置--通知管理-拦截规则- 找到对应的应用-允许。 搞定

我也是这样解决的。。。

#44


我的魅族手机也是,在模拟器上能出现消息提示框,但在手机上就不行了,你换个手机试试

#1


Android Toast显示不出来没遇到过哟。

#2


是不是context 是 application的原因?

#3


你是在哪里调用的弹Toast呢

#4


引用 3 楼 lilidejing 的回复:
你是在哪里调用的弹Toast呢


post到主线程的一个独立线程。

#5


你把Context换成当前的试试呢? 

#6


引用 4 楼 love_bluesky 的回复:
Quote: 引用 3 楼 lilidejing 的回复:

你是在哪里调用的弹Toast呢


post到主线程的一个独立线程。
必须在UI线程调

#7


引用 6 楼 www100204 的回复:
Quote: 引用 4 楼 love_bluesky 的回复:

Quote: 引用 3 楼 lilidejing 的回复:

你是在哪里调用的弹Toast呢


post到主线程的一个独立线程。
必须在UI线程调

这个问题只在华为3C手机上出现,在别的手机上都可以正常弹出显示,这个怎么解释呢?

#8


以前遇到过,被华为手机自带的隐私控制器将通知消息给屏蔽了

#9


引用 8 楼 nickDeLove 的回复:
以前遇到过,被华为手机自带的隐私控制器将通知消息给屏蔽了


其他手机都OK,就是在在荣耀3C上通知toast不显示,你在设置或者安全管理里面找找看

#10


不要用post线程,创建个主线程的handler,发消息就行了。至于只有华为手机有,估计是手机rom定制问题。还是按照大众方法走吧。

#11


引用 7 楼 lionfresh 的回复:
Quote: 引用 6 楼 www100204 的回复:

Quote: 引用 4 楼 love_bluesky 的回复:

Quote: 引用 3 楼 lilidejing 的回复:

你是在哪里调用的弹Toast呢


post到主线程的一个独立线程。
必须在UI线程调

这个问题只在华为3C手机上出现,在别的手机上都可以正常弹出显示,这个怎么解释呢?
那我解释不了,我手上就是华为3c

#12


runOnUiThread(new Runnable() {

@Override
public void run() {
toastSomethingLong("111111");

}
});

#13


多换几个手机试试,表示没遇到过这种问题..

#14


一般toast显示不出有2个原因:
1、在非UI线程中执行,建议使用handler显示提示
2、没有执行到,这是逻辑错误

#15


操蛋 handler 处理 代码据对执行 用自己封装的弹出框 和系统的都不行  只有3c这样

#16


 不是代码的问题,是手机的问题,很明显了。还讨论啥?

#17


要整个兼容的东东了

#18


你看下是不是在设置应用程序里面没有勾选你那个程序“显示通知”那项

#19


是不是在允许XX应用发送通知的时候你点拒绝了?如果你点拒绝了之后再次调试你就要按楼上的方法处理了~

#20


我也遇到,也是华为手机,其他手机都没问题。。。操蛋,都不知道华为干什么了,,,吧  taost 都整没了

#21


应该是Rom的问题吧,跟代码关系不大

#22


有些手机可以设置隐藏toast提示,检查下手机设置

#23


找到解决方法了。
代码没有问题
手机问题  --设置--通知管理-拦截规则- 找到对应的应用-允许。 搞定

#24


引用 18 楼 wuwuyeah 的回复:
你看下是不是在设置应用程序里面没有勾选你那个程序“显示通知”那项


就是这个问题。我日

#25


华为消息设置的问题,重新设置一下看行不。

#26


引用 14 楼 Mailbomb 的回复:
一般toast显示不出有2个原因:
1、在非UI线程中执行,建议使用handler显示提示
2、没有执行到,这是逻辑错误

在某些手机比如小米上是可以关闭这个toast提示的

#27


引用 23 楼 zzudhj 的回复:
找到解决方法了。
代码没有问题
手机问题  --设置--通知管理-拦截规则- 找到对应的应用-允许。 搞定


就是这个解决办法

#28


根据18楼的回复,解决了问题!

#29


我也是遇到这个问题,公司的测试机就只有荣耀3C弹不出toast,应该是手机的问题。代码是正确的

#30


设置通知管理里面把消息禁止了。打开就行了。

#31


刚也遇到了这个问题,设置》通知》你的应用自动为禁止了  选为允许就好了

#32


只有华为手机这么奇葩,设置--》通知---》找到应用,设置为允许,就okay了,我记得IOS上有这个功能。

#33


看完之后,我想默默地赞一个什么也不说

#34


华为的rom就是那么艹0,去设置应用程序管理那里把显示通知开了就行了

#35


这个啊,,我也不会啊

#36


确实可以在设置里面找到通知设置允许、禁止

#37


虽然此贴已经年代久远,不过因为遇到新的问题,将我的经验一并分享,帮助后来人。
如果使用高于23的sdk版本编译,
Toast.makeText(m.getApplicationContext(), msg, Toast.LENGTH_LONG).show();
使用getApplicationContext()一样不能弹出toast。
将compileSdkVersion 22降到24以下即可。

#38


不用这么纠结,只是华为3C一个奇特的设置导致的。
试试"设置--通知管理-拦截规则- 找到对应的应用-允许"
Android Toast显示不出来

#39


设置里 关闭对该应用的推送屏蔽

#40


引用 20 楼 ylj266 的回复:
我也遇到,也是华为手机,其他手机都没问题。。。操蛋,都不知道华为干什么了,,,吧  taost 都整没了

meizu手机也有这个问题

#41


如果老是不出了,把手机上面的应用卸载了重新安装就好了。

#42


魅族手机,华为手机的app调试次数多了,就会有这样的情况,把应用卸载掉,重新安装。问题就好了。我搞了一个晚上啊。

#43


引用 23 楼 zzudhj 的回复:
找到解决方法了。
代码没有问题
手机问题  --设置--通知管理-拦截规则- 找到对应的应用-允许。 搞定

我也是这样解决的。。。

#44


我的魅族手机也是,在模拟器上能出现消息提示框,但在手机上就不行了,你换个手机试试