2011-11-17 63 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。