所以我創建了一個簡單的登錄活動。當用戶登錄失敗3次後,登錄按鈕將被禁用一段時間。即使應用程序關閉,我如何臨時禁用按鈕?
我的努力是當我關閉應用程序並再次打開時,按鈕被啓用。如何解決這個問題?
這裏是我的代碼:
public class LoginControl extends Activity {
private DBControl db = new DBControl(this);
int counter = 2;
Button login = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loginview);
Button register = (Button) findViewById(R.id.btnCreateA);
login = (Button) findViewById(R.id.btnLogin);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
EditText a = (EditText) findViewById(R.id.etUser);
EditText b = (EditText) findViewById(R.id.etPassword);
String user = a.getText().toString();
String pass = b.getText().toString();
String confirm = db.getUserPass(user);
if (user.equals("") || pass.equals("")) {
Toast passed = Toast.makeText(LoginControl.this, "Please input required fields.", Toast.LENGTH_LONG);
passed.show();
} else if (pass.equals(confirm)) {
Toast passed = Toast.makeText(LoginControl.this, "Sucess!", Toast.LENGTH_LONG);
passed.show();
Intent intent = new Intent(LoginControl.this, HomeControl.class).putExtra("Music", false);
startActivity(intent);
finish();
} else if (counter == 0)
// Disable button after 3 failed attempts
{
login.setEnabled(false);
Toast alert = Toast.makeText(LoginControl.this, "Login Disabled for 5 mins", Toast.LENGTH_LONG);
alert.show();
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
login.setEnabled(true);
counter = 2;
}
}, 30000);
} else {
Toast passed = Toast.makeText(LoginControl.this, "Username or password don't match!", Toast.LENGTH_LONG);
counter--;
passed.show();
}
} catch (Exception e) {
Toast passed = Toast.makeText(LoginControl.this, e.toString(), Toast.LENGTH_LONG);
passed.show();
}
}
});
}
}
這當然會禁用按鈕,但仍然存在問題。 即使時間流逝,按鈕也不會回到啓用模式。 –
請參閱編輯 - 您只需要保持「true」而不是「false」,或者只需重置您的共享首選項,以便下次繞過它時使用後備('true')值。 –
我仍然不太喜歡共享首選項。請問我應該在哪一行放置該代碼? –