我试图展示一个祝酒词,当我的API请求不工作,由于没有互联网连接。首先,我尝试在try块失败时显示一个Toast,然后在catch块中显示这个Toast。我尝试了developer.android.com的方法,但我甚至无法启动应用程序。
我在catch-block中的代码是这样的:
} catch {
Context context = getApplicationContext();
Toast.makeText(context, "No Internet Connection.", Toast.LENGTH_SHORT).show();
}
我似乎对getApplicationContext()
方法有问题,因为它突出显示为红色。这似乎是一个问题,因为我在一个片段内部使用这个。我在使用activity·activity=getActivity()
时读到了一些内容,但当尝试将这个activity
作为上下文插入makeText()
方法时,我得到了以下错误消息:
E/AndroidRuntime: FATAL EXCEPTION: Thread-4
Process: com.example.dhapp, PID: 16158
java.lang.NullPointerException: Can't toast on a thread that has not called Looper.prepare()
at com.android.internal.util.Preconditions.checkNotNull(Preconditions.java:157)
at android.widget.Toast.getLooper(Toast.java:287)
at android.widget.Toast.<init>(Toast.java:256)
at android.widget.Toast.makeText(Toast.java:891)
at android.widget.Toast.makeText(Toast.java:879)
at com.example.dhapp.SearchFragment$apiThread.run(SearchFragment.java:112)
有什么建议能让我这么做吗?提前多谢了!
听起来您没有从主线程内调用toast.makeText()
。您从其中调用的线程需要访问UI,本质上是为了显示Toast。
这个SO线程可能会给你一些指针。
您可以尝试requireActivity(),而不是使用getApplicationContext()