2011-11-17 64 views
3
// ---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/使它更短?在屏幕上敬酒住了一分多钟

+1

把你的烤面包圈外,你的其他人可以被称为几次。或者你可以把它留在循环中,但在这种情况下添加一些布尔标志 - boolean hasShown = false;当你显示它 - hasShown = true;并在你的其他检查,如果你之前已经显示吐司 – 2011-11-17 16:43:21

回答

6
  1. 如果您一次呼叫N * 1秒敬酒,那么它们会按顺序显示最多〜N秒,就像在内部循环中发生的那样。在这里你得到amount * SHORT_DURATION吐司总时间。

  2. 在进入循环之前检查if (amount < 100)的条件。这是更正确,高效,并且只会显示一个Toast。