亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 EditText 字段上顯示錯誤消息之前添加延遲?

如何在 EditText 字段上顯示錯誤消息之前添加延遲?

千萬里不及你 2023-05-10 15:13:42
我對 editText 元素進行了一些簡單的正則表達式驗證。我遇到的問題是,如果驗證失敗(即使用戶仍在輸入),錯誤會立即顯示,這不是很好的用戶體驗。這是當前的代碼。TextWatcher tw = new TextWatcher() {    public void afterTextChanged(Editable s) {        String currentTime = t_timeEditText.getText().toString();        if (!validTimepattern.matcher(currentTime).matches()){            timeEditText.setError("Not a valid time");        }    }}我認為最好的解決方案是等到焦點從 editText 元素移開后再運行上述驗證?;蛘撸覀兛梢栽谶\行驗證之前等待自上次輸入以來的 X 毫秒,或者只是在其中添加一些討厭的硬編碼延遲。有什么建議么?
查看完整描述

3 回答

?
青春有我

TA貢獻1784條經驗 獲得超8個贊

你可以用處理程序來做到這一點。根據您的要求更改 TIME_DELAY。在類級別定義時間延遲(1000 表示 1 秒)。我已經根據您的要求修改了代碼。在這里我添加了 2 秒的延遲。你可以隨它去。


val TIME_DELAY : Int = 2000

if (!validTimepattern.matcher(currentTime).matches()){


    Handler().postDelayed(object : Runnable{

                    override fun run() {

         timeEditText.setError(“Not a valid time”);

                    }

                }, TIME_DELAY )

    }


查看完整回答
反對 回復 2023-05-10
?
MYYA

TA貢獻1868條經驗 獲得超4個贊

您可以使用 Handler.postDelayed 方法實現此目的


 private Handler handler = new Handler()


    private Runnable runnable  = new Runnable() {

      public void run() 

        { 

           timeEditText.setError("Not a valid time");

        } 


    }

并在 onCreate 內部創建下面的文本觀察器并附加以編輯文本


TextWatcher tw = new TextWatcher() {

    public void afterTextChanged(Editable s) {

           timeEditText.setError(null)

         handler.removeCallbacks(runnable)


        if (!validTimepattern.matcher(currentTime).matches()){

             handler.postDelayed(runnable,3000)

        }

    }

}

并在 ondestroy 中添加以下行以避免活動被銷毀時崩潰


 handler.removeCallbacks(runnable)


查看完整回答
反對 回復 2023-05-10
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

如果你想暫停執行一段時間(例如:毫秒),你可以使用 SystemClock.sleep(3000);



查看完整回答
反對 回復 2023-05-10
  • 3 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號