亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android如何防止多次點(diǎn)擊事件

 更新時(shí)間:2015年12月03日 09:05:19   作者:丶貳九  
大家都遇到這樣一個(gè)問(wèn)題吧,一個(gè)點(diǎn)擊事件多次觸發(fā)導(dǎo)致同樣的內(nèi)容提交了很多次,下面小編給大家?guī)?lái)一篇文章幫助大家解決android如何防止多次點(diǎn)擊事件,對(duì)android防止多次點(diǎn)擊事件相關(guān)只是感興趣的朋友一起學(xué)習(xí)吧

問(wèn)題描述

恐怕大家都會(huì)遇到這樣的問(wèn)題,一個(gè)點(diǎn)擊事件多次觸發(fā),導(dǎo)致,同樣的內(nèi)容提交了多次,或者說(shuō)彈出多個(gè)頁(yè)面...

onClick事件是Android開發(fā)中最常見的事件。比如,一個(gè)submitButton,功能是點(diǎn)擊之后會(huì)提交一個(gè)訂單,則一般代碼如下,其中submitOrder()函數(shù)會(huì)跳轉(zhuǎn)到下一頁(yè)進(jìn)行處理 :

<code class="hljs" java="">  //代碼0
  submitButton.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    submitOrder();
   }
  }); </code>

正常情況下這段代碼是沒(méi)什么問(wèn)題的,但是Android設(shè)備的機(jī)型性能等千差萬(wàn)別,如果碰到比較卡的手機(jī),則有可能出現(xiàn)submitOrder()函數(shù)跳轉(zhuǎn)頁(yè)面出現(xiàn)延遲的現(xiàn)象。碰到這種現(xiàn)象,則用戶就很有可能再次點(diǎn)擊一次,從而造成函數(shù)被調(diào)用兩次,出現(xiàn)重復(fù)訂單的BUG。

一般地,碰到這現(xiàn)象,首先就會(huì)想到的就是在點(diǎn)擊之后把submitButton設(shè)置為不可點(diǎn)擊:

<code class="hljs" cs="">  //代碼1
  submitButton.setClickable(false);
  //或者 
  submitButton.setEnabled(false); </code>

此方法也確實(shí)有效,不過(guò)如果submitOrder()方法沒(méi)有成功,需要再次提交訂單時(shí)又需要再重復(fù)把submitButton設(shè)置為可點(diǎn)擊狀態(tài)。如果類似的button比較多時(shí),就顯得比較麻煩、混亂。

方案

自定義一個(gè)NoDoubleClickListener,繼承自O(shè)nClickListener:

<code class="hljs" java="">  //代碼2
  public abstract class NoDoubleClickListener implements OnClickListener {
   public static final int MIN_CLICK_DELAY_TIME = 1000;
   private long lastClickTime = 0;
   @Override
   public void onClick(View v) {
    long currentTime = Calendar.getInstance().getTimeInMillis();
    if (currentTime - lastClickTime > MIN_CLICK_DELAY_TIME) {
     lastClickTime = currentTime;
     onNoDoubleClick(v);
    } 
   } 
  }</code>

使用方法—— 給submitButton設(shè)置點(diǎn)擊事件時(shí)用NoDoubleClickListener代替OnClickListener,并且實(shí)現(xiàn)方法onNoDoubleClick代替onClick即可,像這樣:

<code class="hljs" java="">  //代碼3
  submitButton.setOnClickListener(new NoDoubleClickListener() {
   @Override
   public void onNoDoubleClick(View v) {
    submitOrder();
   }
  }); </code>

原理:

很簡(jiǎn)單,見代碼……

就是用onNoDoubleClick代替onClick處理具體的操作,在onClick方法中加一個(gè)判斷:在接收到點(diǎn)擊事件之后,先判斷一下時(shí)間,如果距離上次處理操作不足MIN_CLICK_DELAY_TIME,就忽視——即能防止誤操作的連續(xù)點(diǎn)擊導(dǎo)致重復(fù)事件。

MIN_CLICK_DELAY_TIME可調(diào)。

優(yōu)勢(shì)

好處是不用改變?cè)写a的邏輯,就只需要兩個(gè)替換:NoDoubleClickListener代替OnClickListener,onNoDoubleClick代替onClick。 代碼的結(jié)構(gòu)等都不需要做改變(**對(duì)比上面的代碼0跟代碼**3),不需要關(guān)心處理更改button的狀態(tài)這些額外判斷邏輯,只需要關(guān)注業(yè)務(wù)邏輯即可,簡(jiǎn)潔優(yōu)雅~

相關(guān)文章

  • Android測(cè)試方法總結(jié)

    Android測(cè)試方法總結(jié)

    在這篇文章中我們給大家總結(jié)了Android測(cè)試方法以及需要注意的地方,有興趣的朋友參考學(xué)習(xí)下。
    2018-07-07
  • 使用Eclipse配置android開發(fā)環(huán)境教程

    使用Eclipse配置android開發(fā)環(huán)境教程

    這篇文章主要介紹了使用Eclipse配置android開發(fā)環(huán)境教程,本文講解了下載需要用到的工具、下載完需要的工具之后開始安裝、讓Ecplise自動(dòng)安裝Android開發(fā)插件(ADT- plugin)、配置Andiord SDK路徑、測(cè)試開發(fā)一個(gè)Android項(xiàng)目等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Android實(shí)現(xiàn)帶圖標(biāo)的列表對(duì)話框

    Android實(shí)現(xiàn)帶圖標(biāo)的列表對(duì)話框

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)帶圖標(biāo)的列表對(duì)話框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android個(gè)人中心的頭像上傳,圖片編碼及截取實(shí)例

    Android個(gè)人中心的頭像上傳,圖片編碼及截取實(shí)例

    本篇文章主要介紹了Android個(gè)人中心的頭像上傳,圖片編碼及截取實(shí)例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2016-12-12
  • Android PicSelector圖片選擇器小功能

    Android PicSelector圖片選擇器小功能

    這篇文章主要為大家詳細(xì)介紹了Android PicSelector圖片選擇器小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Android Room數(shù)據(jù)庫(kù)多表查詢的使用實(shí)例

    Android Room數(shù)據(jù)庫(kù)多表查詢的使用實(shí)例

    這篇文章主要介紹了Android Room數(shù)據(jù)庫(kù)多表查詢的使用實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Android下Button實(shí)現(xiàn)圖文混排效果

    Android下Button實(shí)現(xiàn)圖文混排效果

    這篇文章主要為大家詳細(xì)介紹了Android下Button實(shí)現(xiàn)圖文混排效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Android開發(fā)之Fragment懶加載的幾種方式及性能對(duì)比

    Android開發(fā)之Fragment懶加載的幾種方式及性能對(duì)比

    這篇文章主要介紹了Android開發(fā)之Fragment懶加載的幾種方式及性能對(duì)比的相關(guān)資料,具體詳細(xì)介紹需要的小伙伴可以參考下面文章內(nèi)容
    2022-05-05
  • Android使用Scrolling機(jī)制實(shí)現(xiàn)Tab吸頂效果

    Android使用Scrolling機(jī)制實(shí)現(xiàn)Tab吸頂效果

    app 首頁(yè)中經(jīng)常要實(shí)現(xiàn)首頁(yè)頭卡共享,tab 吸頂,內(nèi)容區(qū)通過(guò) ViewPager 切換的需求,以前往往是利用事件處理來(lái)完成,但是這些也有一定的弊端和滑動(dòng)方面不如意的地方,本文我們利用NestedScrolling機(jī)制來(lái)實(shí)現(xiàn),感興趣的朋友可以參考下
    2024-01-01
  • Android Studio如何打包生成APK

    Android Studio如何打包生成APK

    這篇文章主要介紹了Android Studio如何打包生成APK,幫助大家更好的進(jìn)行安卓開發(fā),感興趣的朋友可以了解下
    2020-09-09

最新評(píng)論