2017-07-18 74 views
-1

點擊按鈕調用事件或執行相應的方法的次數很多時按下非常快?在Android中處理此問題的最佳方法是什麼?快速按下按鈕事件發生兩次

+0

檢查了這一點... HTTPS://stackoverflow.com/questions/16534369/avoid-button-multiple-rapid-clicks –

+0

這個問題是很難理解的。解釋你做了什麼,解釋發生了什麼,然後解釋你想要發生什麼。使用更多的話。請一位朋友幫你用清晰的英文寫出問題可能會有幫助。 – Buster

+0

其實它的一種形式和當用戶按下提交按鈕條目得到保存我的應用程序用戶抱怨從應用程序衝出相同的條目,我已經用一種簡單的方法通過採取一個變量的時間間隔,如果時間差拳是少於2秒我只是返回,但我仍然面臨問題 – himanshu

回答

0

on_tap是一個常見的事件,我從來沒有使用過這個問題。 您可以儘可能快地「點擊」,並且每次都應該提高事件。

0
onClick(View v) { 
MultiClickPreventer.preventMultiClick(v); 
//your op here 
} 

...

public class MultiClickPreventer { 
private static final long DELAY_IN_MS = 500; 

public static void preventMultiClick(final View view) { 
    if (!view.isClickable()) { 
     return; 
    } 
    view.setClickable(false); 
    view.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      view.setClickable(true); 
     } 
    }, DELAY_IN_MS); 
} 

}

+0

使用這種方法先生,但沒有爲我工作的事件獲取存儲在隊列中之前clickable被設置爲false – himanshu

0

正如你所提到的,可能之前,首先單擊事件中onClick()的處理要排隊的多個按鈕的點擊事件,所以只需撥打setClickable(false)setEnabled(false)不會總是工作。

但是,即使您可以排隊多個事件,它們也會始終在同一個線程上處理,這意味着始終會有一個第一個點擊事件。

存儲您自己的boolean,並且僅在第一次執行您的onClick()操作。

private boolean firstEvent = true; 

public void onClick(View v) { 
    if (firstEvent) { 
     firstEvent = false; 
     // your code here 
    } 
} 
+0

但我有我的表單中的多個按鈕併爲它們中的每一個設置一個布爾值不是一個好習慣。 – himanshu

+0

是什麼讓你說這不是好的做法? –

+0

,但我顯示警報對話框,並有3到4個按鈕也你覺得它有一個好主意,爲他們所有單獨的變量設置,並將其全部設置爲true,如果在提交網絡調用時出現任何網絡連接問題? – himanshu