在屏幕上敬酒住了一分多钟
问题描述:
// ---sends an SMS message to another device---
private void sendSMS(String phoneNumber, String message) {
int i;
SmsManager sms = SmsManager.getDefault();
int amount = 10; // just making 10 the default if the EditText has an
// invalid value
try {
amount = Integer.parseInt(smsamount.getText().toString());
} catch (NumberFormatException smsamount) {
}
for (i = 0; i < amount; i++) {
if (amount < 100)
sms.sendTextMessage(phoneNumber, null, message, null, null);
else
Toast.makeText(getBaseContext(),
"Please enter an amount less than 100.",
Toast.LENGTH_SHORT).show();
}
}
这是有效的,但吐司在屏幕上停留一分多钟。它甚至在退出应用后仍然保留在屏幕上。我曾尝试在发送消息的过程之前改变敬酒的方式,但它强制关闭应用程序。这是我将不得不使用位于这里的黑客:http://thinkandroid.wordpress.com/2010/02/19/indefinite-toast-hack/使它更短?在屏幕上敬酒住了一分多钟
答
如果您一次呼叫N * 1秒敬酒,那么它们会按顺序显示最多〜N秒,就像在内部循环中发生的那样。在这里你得到
amount * SHORT_DURATION
吐司总时间。在进入循环之前检查
if (amount < 100)
的条件。这是更正确,高效,并且只会显示一个Toast。
把你的烤面包圈外,你的其他人可以被称为几次。或者你可以把它留在循环中,但在这种情况下添加一些布尔标志 - boolean hasShown = false;当你显示它 - hasShown = true;并在你的其他检查,如果你之前已经显示吐司 – 2011-11-17 16:43:21