旧问题:“为什么创建吐司会崩溃我的应用程序?”

如果我不使用吐司,我的应用程序运行正常,但是如果我想创建并显示这样的简单吐司:

   Toast SimpleToast = Toast.makeText(getApplicationContext(), "Just a toast.",Toast.LENGTH_LONG);
   SimpleToast.setGravity(Gravity.TOP, 0, 0);
   SimpleToast.show();

我在日志中获得这些行,然后应用程序崩溃:

NotificationService   enqueueToast pkg=games.MyAppName callback=android.app.ITransientNotification$Stub$Proxy@49603368 duration=1
ResourceType          No package identifier when getting name for resource number 0x00000000
AndroidRuntime        Shutting down VM
dalvikvm              threadid=3: thread exiting with uncaught exception (group=0x4001b188)
AndroidRuntime        Uncaught handler: thread main exiting due to uncaught exception
AndroidRuntime        java.lang.NullPointerException

我已经检查并仔细检查了上面的代码是使其崩溃的原因。我在模拟器上运行,因为我目前没有Android手机。

有帮助吗?

解决方案

任何被认为“阻止”的功能都必须从线程内部创建。这包括模态对话框,写入共享偏好,访问URL以及奇怪的简单吐司消息。

这些东西从活动的概述中调用时可以工作,但是需要线程/处理程序设置才能从任何地方调用。

其他提示

据我所知,您无法在应用程序上下文中显示敬酒,您必须在活动上下文中展示它。烤面包不绑定到您的应用程序,它与您正在显示的活动有关。而不是使用 getApplicationContext(), ,尝试使用名称的变量 ctx 包含对您的活动的参考。

祝你好运!

由于某种原因,getApplicationContext返回null。尝试“ ActivityName.This”,而是在您的OnClick()方法上,在侦听器内部。

@Override
public boolean onTouch(View V, MotionEvent event) {
 ...
 Toast toast = Toast.makeText(V.getContext(), ...

在哪里v您的观点将正常工作。您还可以在构造函数中使用AppConnText()。

看来您试图在某个地方放置一个无效的指针,尝试踏入调试器,然后查看确切的位置。可能是 .setGravity 称呼。这表明 Toast.makeText 未能创建您的吐司。您应该注意,可以从活动或服务中创建和显示吐司。

将代码包装在试用中,然后检查丢弃的异常。听起来像是在您不期望进行的一个活动上的回调方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top