2012-03-06 11 views
1

ログイン認証を作成しようとしていて、ユーザーが間違ったパスワードを3回入力したときです。 ユーザー名とパスワードのテキストボックスが無効になります。私はSQLデータベースに保存されているユーザー名とパスワードのユーザー入力を比較して、ユーザーのユーザー名とパスワードを検証します。テキストボックスを無効にするユーザーが間違ったパスワードを3回入力した場合

+0

最初の質問:いつ再び有効になりますか? setEnabled(boolean value)を使ってEditTextを単に有効/無効にすることができます。 – josephus

+0

@JosephusVillareyユーザーが正常にログインした後に再度有効にする必要はありません。誤ったパスワードまたはユーザー名を3回入力した後にテキストボックスを無効にしたいだけです。 – user1222493

+0

しかし、テキストボックスが無効になっていると、ユーザーは正常にログインできますか?私たちは同じ船に乗っていますか? – josephus

答えて

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

は、GoogleがAndroidといくつかのランダムな新しいデバイスの古いバージョンに影響を与えるとの提起のrelavent問題があります。

effecient、再利用可能な、作業の修正は、次のように(これはActivityの内部にあると仮定した場合)である:動作していないは、setEnabled(偽)のための

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); 
} 

問題レポート: はhttp://code.google.com/p/android/issues/detail?id=2771

0

あなたが保存しなければならないが試行回数はSharedPreferencesです。この値が3に達すると、ちょうどあなたがまたあなたのonCreateやonResumeにこの数の値をチェックする必要があります

editText.setEnabled(false); 

を行う、ちょうどので、ユーザーはアプリを殺すし、それを再起動すると、のEditTextはまだ無効になります。

また、EditTextではなくOK/Loginボタンを無効にすることをお勧めします。

関連する問題