我知道这是一个很老的问题,有许多答案,就像我发现here。但我仍然看不到我的祝酒词。
我尝试检查当前的线程:
Log.d("DEBUG", "Main Looper: " + Looper.getMainLooper().toString() + ", Current Looper: " + Looper.myLooper().toString());
Log.d("DEBUG", "Main Thread: " + Looper.getMainLooper().getThread().toString() + ", Current Thread: " + Thread.currentThread().toString());
//and the log is like:
D/DEBUG﹕ Main Looper: Looper{420a9e68}, Current Looper: Looper{420a9e68}
D/DEBUG﹕ Main Thread: Thread[main,5,main], Current Thread: Thread[main,5,main]
所以我觉得我在主线程(ui线程)中,我也特意尝试在ui线程中吐司:
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), "abc", Toast.LENGTH_LONG).show();
Log.d("DEBUG", "ui thread abc");
}
});
我可以看到日志“ui thread abc”,但吐司仍未出现。
然后我想也许吐司与其他观点重叠,所以我试图指定吐司的位置,如: Toast toast Toast.makeText(getBaseContext(),“abc”,Toast.LENGTH_LONG);
Toast toast = Toast.makeText(this, "abc", Toast.LENGTH_LONG);
toast.setGravity(Gravity.TOP|Gravity.CENTER, 0, 0);
toast.show();
仍然一无所获。那么你觉得我的祝酒词怎么样?
------- UPDATE
我正处于一个垂直LinearLayout和几个嵌入式水平LinearLayouts的活动中。 我现在只参加了两项活动,而且我在主要的活动中敬酒。
我正在使用自定义图像滑块并在onclick事件中进行烘烤,onClickMethod如下所示:
public void onSliderClick(BaseSliderView slider) {
// Log.d("DEBUG", "Main Looper: " + Looper.getMainLooper().toString() + ", Current Looper: " + Looper.myLooper().toString());
// Log.d("DEBUG", "Main Thread: " + Looper.getMainLooper().getThread().toString() + ", Current Thread: " + Thread.currentThread().toString());
// Toast.makeText(getBaseContext(), slider.getBundle().get("testMsg").toString(), Toast.LENGTH_LONG).show();
// Toast.makeText(getApplicationContext(), slider.getBundle().get("testMsg").toString(), Toast.LENGTH_LONG).show();
// Log.d("DEBUG", "Slider - " + slider.getBundle().get("testMsg").toString());
Toast.makeText(getApplicationContext(), "abc", Toast.LENGTH_LONG).show();
Log.d("DEBUG", "msg abc 123");
// Toast toast = Toast.makeText(this, "abc", Toast.LENGTH_SHORT);
// toast.setGravity(Gravity.TOP|Gravity.CENTER, 0, 0);
// toast.show();
}
-------更新2
我刚刚发现动作栏吐司也没有显示,我确实设置了标题元素,我正在使用一个位于屏幕底部的分割操作栏。
实际上我之前可以看到所有的Toast消息,然后我对UI或其他一些东西进行了一些更改,然后所有的吐司都消失了。问题是我无法回滚到吐司工作正常的旧版本,我找不到它们现在消失的原因。
顺便提一下,添加自定义图像滑块后,toast仍然很好,除了自动切换图像滑块的后台线程外,没有任何其他线程。
答案 0 :(得分:1)
我一个月前遇到同样的问题,当我试图从Async<>(非UI线程)的 doInBackground(String ... params)方法做吐司时,我用它和它工作
MainActivity.this.runOnUiThread(new Runnable() {
public void run() {
Toast.makeText(getApplicationContext(), "whatever message ",
Toast.LENGTH_LONG).show();
希望这能帮到你
答案 1 :(得分:0)
使用getApplicationContext()
或活动上下文
Toast.makeText(getApplicationContext(), "abc", Toast.LENGTH_LONG).show();
答案 2 :(得分:0)
今天我在开发其他应用时又遇到了问题,并再次进行了最后一次搜索。最后发现这似乎是一个Android bug ,如果你禁用了应用的通知,那么烤面包消息也被禁用。
我所要做的就是去设置 - >应用 - > My_App检查“显示通知”,偶尔我自己也不会检查。