为什么在onCreate()之外显示吐司崩溃了我的应用程序?
-
28-09-2019 - |
题
旧问题:“为什么创建吐司会崩溃我的应用程序?”
如果我不使用吐司,我的应用程序运行正常,但是如果我想创建并显示这样的简单吐司:
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
未能创建您的吐司。您应该注意,可以从活动或服务中创建和显示吐司。
将代码包装在试用中,然后检查丢弃的异常。听起来像是在您不期望进行的一个活动上的回调方法。
不隶属于 StackOverflow