簡體   English   中英

Android:Toast不會延遲微調器

[英]Android: Toast won't delay on spinner

我想在選定的延遲時間延遲吐司,如(15,30,60秒,沒有延遲),但它不起作用。 這是代碼:

public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {
        if(FirstLoad){
            FirstLoad = false;
            return;                         
        }
          Toast.makeText(parent.getContext(), "You chose " + 
              parent.getItemAtPosition(pos).toString()+ " to delay", Toast.LENGTH_LONG).show();

          Message message = new Message();
          Bundle bun = new Bundle();
          bun.putString("delay", parent.getItemAtPosition(pos).toString());
          message.obj = bun;
          if (pos == 0) {
              handler.sendMessageDelayed(message, 0);
          }
          else if (pos == 1) {
              handler.sendMessageDelayed(message, 15000);
          }
          else if (pos == 2) {
              handler.sendMessageDelayed(message, 30000);
          }
          else if (pos == 3) {
              handler.sendMessageDelayed(message, 60000);
          }
          //handler.sendMessageDelayed(message, 15000);
        }

        public void onNothingSelected(AdapterView<?> parent) {
          return;
        }

請幫助。

嘗試這個 :

    final Toast toast = Toast.makeText(parent.getContext(), "You chose "
            + parent.getItemAtPosition(pos).toString() + " to delay",
            Toast.LENGTH_LONG);

    Runnable showToastRunnable = new Runnable() {
        public void run() {
            toast.show();
        }
    };

    if (pos == 0) {
        handler.postDelayed(showToastRunnable, 0);
    } else if (pos == 1) {
        handler.postDelayed(showToastRunnable, 15000);
    } else if (pos == 2) {
        handler.postDelayed(showToastRunnable, 30000);
    } else if (pos == 3) {
        handler.postDelayed(showToastRunnable, 60000);
    }

編輯:

順便說一句,我想把它轉移到發送按鈕,我想根據用戶選擇的延遲延遲“發送消息”的祝酒。 我該如何實施呢?

你怎么得到延遲? 是用戶在EditText輸入的內容嗎? 在這種情況下,您可以像這樣得到延遲:

int delay = Integer.parseInt(delayEditText.getText().toString());

然后使用該延遲量將runnable發布到處理程序,如下所示:

handler.postDelayed(showToastRunnable, delay);

在這種情況下,您可以刪除整個if-else塊。

以這種方式聲明您的處理程序:

Hanlder handlder=new Handler() {

    public  void handleMessage (Message msg) {
         Toast.makeText(YOUR_ACTIVITY_CLASS_NAME.this,"You chose"+(Bundle(msg.obj)).getString("delay","DEFAULT_VALUE")+"to delay",Toast.LENGTH_LONG).show();
      }
    };

簡單地說,您不必使用捆綁包,但可以調用msg.what = THE DELEY TIME。 此外,您可以調用handler.obtainMessage來獲取消息。 請參閱http://developer.android.com/reference/android/os/Handler.html#obtainMessage%28%29因此,每次發送消息時,都會在此處理,因此您可以調用show toast。 對不起,我沒有在這台筆記本電腦上安裝Eclipse,所以我無法測試代碼。 但是,我相信它有效。

for this you can use custom dialog and hide it after a particular time.

    class CustomDialog extends Dialog
    {
             setContentView(R.layout.dialogxml);    
         txtview=(TextView)findViewById(R.id.txtmsg);
    }
    Customdialog dialog= CustomDialog.show();

    dialog.hide();
Handler hl_DelayedToast = new Handler(); // scope global

public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) 
{
    if(FirstLoad)
    {
        FirstLoad = false;
        return;                         
    }

    //if else logic to check the time
    // if 0
    hl_DelayedToast.postDelayed(mytoastshower,0);
    // if 1
    hl_DelayedToast.postDelayed(mytoastshower,1000);
}

public Runnable mytoastshower = new Runnable
{ 
    public void run()
    {
        Toast.show();// show the toast
    }
}

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM