我有一个不会在执行后消失的敬酒信息。我猜这与它在循环中有关,但我不确定。有人能帮我弄清楚为什么吐司信息没有不同吗?
@Override
public void onClick(View v) {
int index = 0;
for(int i= 0; i<userArray.length; i++){
if(email.getText().toString().equals(userArray[i])){
index = i;
}
if(passArray[index].equals(password.getText().toString())){
Toast.makeText(getBaseContext(), "SUCCESS!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getBaseContext(), "INVALID LOGIN", Toast.LENGTH_SHORT).show();
}
}
Intent mainIntent = new Intent(LoginActivity.this, MainActivity.class);
startActivityForResult(mainIntent, 0);
}
}
发布于 2013-10-31 07:15:30
如果您从服务线程调用Toast消息,并且该线程在Toast被设置为消失之前完成其工作,则Toast消息可能会被卡住。然后,你会被屏幕上的Toast消息卡住,直到你杀死应用程序。
发布于 2013-03-21 13:54:26
Toast
总是消失。一直都是。
因此,您将显示多条Toast消息。有保证。通过使用某种计数器更改消息或在显示初始消息后禁用消息来测试这一点。
请注意,相当多的Toast可能会堆叠在一起,并且需要很长时间才能完成背靠背的显示。等一下,只要你的应用程序没有无限循环,它们最终就会消失。
编辑:I stant更正。显然,如果从线程、服务或IntentService启动,Toast
消息可能会卡住并保持显示。感谢@Johnathan和@zapotec。
发布于 2016-05-09 15:57:14
Toast
并不总是消失。
如果您从服务线程调用Toast,并且该线程在Toast设置为消失之前完成了其工作,则屏幕上将显示Toast消息,直到您终止应用程序为止。
(由Jonathan Cole从原始答案复制,不幸被删除)
下面是一个堆栈跟踪示例,解释了这种情况是如何发生的:
java.lang.IllegalStateException: Handler (android.os.Handler) {123f93ea} sending message to a Handler on a dead thread
at android.os.MessageQueue.enqueueMessage(MessageQueue.java:325)
at android.os.Handler.enqueueMessage(Handler.java:631)
at android.os.Handler.sendMessageAtTime(Handler.java:600)
at android.os.Handler.sendMessageDelayed(Handler.java:570)
at android.os.Handler.post(Handler.java:326)
at android.widget.Toast$TN.hide(Toast.java:387)
at android.widget.Toast.cancel(Toast.java:133)
https://stackoverflow.com/questions/15540416
复制相似问题