【问题标题】:Android Toast works in emulator but not on my deviceAndroid Toast 可以在模拟器中运行,但不能在我的设备上运行
【发布时间】:2012-09-08 01:02:18
【问题描述】:

我在我的应用程序的几个地方使用了这段代码:

Toast.makeText(getApplicationContext(), "toast", Toast.LENGTH_SHORT).show();

在模拟器中运行时,它们几乎总是显示。唯一没有显示的情况是我在调试时需要很长时间才能单步执行代码。

当我在我的设备上安装应用程序时,所有 Toast 都不起作用。起初我没有注意到,但我意识到我从来没有见过它们在我的设备上弹出。 Toast 是这样工作的吗?

编辑: 我尝试了这两种选择: Toast.makeText(this, "toast", Toast.LENGTH_SHORT).show(); Toast.makeText(ActivityName.this, "toast", Toast.LENGTH_SHORT).show();

这些都不起作用。所有 toast 都可以在模拟器(2.2、2.3、4.1)中运行,但在我的设备(Galaxy Nexus 4.1)上都没有。

【问题讨论】:

  • Toast 通知肯定会出现在设备上。首先想到的是我听说getApplicationContext() 可能有点阴暗。如果可能的话,也许尝试使用任何已知View 中的.getContext()。另外,您是否从其他应用程序中看到Toasts? (想不出一个地方来检查他们的头顶......)
  • ActivityName.this 而不是 getAppliationContext()
  • 当我尝试在按钮单击上显示 toast 时,我将代码更改为 view.getContext()。这仍然适用于我的模拟器,但不适用于我的设备。我也尝试过 ActivityName.this 并且它也可以在模拟器中工作,但不能在我的设备上工作。我注意到其他设备确实显示吐司,所以我想知道我的设备是否是问题而不是代码。

标签: android


【解决方案1】:

我遇到了这个问题,发现我在设备设置中将我的应用设置为不显示任何通知。在我在设备设置下允许通知后,一切正常。

希望这将帮助其他一些可怜的灵魂不要花一个下午来寻找答案。

【讨论】:

  • 我可能就是那个可怜的灵魂。我永远不会想到这一点。你至少救了我一个下午。干得好!
【解决方案2】:

您为显示 Toast 所写的行是 100% 正确的,应该会出现 toast。没有错误。

问题就在你写这些行的地方..!!


要了解实际问题,需要检查并debug 您的整个代码。

但在猜测可能存在的问题时,

  1. 您已将您的Toast 置于某些不成立的if..else 条件

  2. Toast执行控制不去的代码部分

  3. String 变量附加Toast字符串,这些变量是null

  4. 只是检查一下,将您的 Toast 替换为 Log 看看会发生什么。

【讨论】:

  • 感谢您的建议。问题是 Toast 出现在模拟器中。如果我将其更改为,它们也会出现在 Log 中。但是,它们不会出现在我的特定设备上。我发现它们确实出现在其他人的设备上,这让我更加困惑。
猜你喜欢
  • 2018-10-16
  • 1970-01-01
  • 2013-07-12
  • 2019-12-13
  • 2021-08-07
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多