2012-03-06 62 views
1

我試圖創建一個登錄身份驗證,並且當用戶輸入錯誤的密碼3次。 用戶名和密碼的texboxes將被禁用,我將用戶輸入與我的SQL數據庫中存儲的用戶名和密碼進行比較,以驗證用戶的用戶名和密碼,我該怎麼做?禁用文本框如果用戶輸入錯誤的密碼3次

+0

第一個問題:它何時會再次啓用?你可以簡單地通過setEnabled(布爾值)禁用/啓用EditText; – josephus 2012-03-06 01:39:44

+0

@JosephusVillarey在用戶成功登錄後不會再次啓用,只是想在用戶輸入錯誤密碼或用戶名3次後禁用文本框。 – user1222493 2012-03-06 01:45:17

+0

但是當文本框被禁用時,用戶如何能夠成功登錄?我們在同一條船上嗎? – josephus 2012-03-06 07:27:07

回答

0

你應該使用一個變量來保持嘗試次數。然後,當incorrectGuesses等於3:

editText.setFocusable(false) 

editText.setEditable(false) // Note that this is deprecated but replacement (inputType) has bug 
0

設置EditText只讀: 從create方法中存儲對文本框(EditText)的引用,並在需要時調用.setEditable(false)以禁用它們。也許你還會調用setText(「」)來清除用戶輸入的值。

0

沒有與谷歌影響老版本的Android和一些隨機更新的設備提出了relavent問題。

的effecient,可重複使用的,工作的解決方法是如下(假設這是一個Activity內):

private Static OnClickListener listener; 

@Override 
public void onCreate(...){ 
    ... 
    listener = new OnClickListener(){ ... }; 
} 


public void disableEditText(EditText t){ 
    t.setOnClickListener(null); 
} 

public void enableEditText(EditText t){ 
    t.setOnClickListener(listener); 
} 

爲的setEnabled(假)問題報告不工作: http://code.google.com/p/android/issues/detail?id=2771

0

你應該存儲嘗試次數爲SharedPreferences。一旦這個值達到3,只要做

editText.setEnabled(false); 

您也應該檢查這個數的值在你的onCreate或的onResume,就這樣當用戶關閉應用程序,並重新啓動它,在EditText上仍然會被禁用。

在另一個說明中,您可能想要看看只是禁用「確定/登錄」按鈕(我假設您也有),而不是EditText是否更好。

相關問題