Android 如何再次启用禁用的组件
单击“登录”按钮时,启动进度栏,直到我登录。当进度栏显示为禁用状态时,所有编辑文本和按钮都将被禁用,但如果用户错误地输入其姓名或密码,则字段将保持禁用状态。我的问题是在哪里可以设置组件的启用。 代码如下:Android 如何再次启用禁用的组件,android,login,progressdialog,disabled-input,Android,Login,Progressdialog,Disabled Input,单击“登录”按钮时,启动进度栏,直到我登录。当进度栏显示为禁用状态时,所有编辑文本和按钮都将被禁用,但如果用户错误地输入其姓名或密码,则字段将保持禁用状态。我的问题是在哪里可以设置组件的启用。 代码如下: public void loginButton(View v) { EditText etEmail = (EditText) findViewById(R.id.etEmail); EditText etPassword = (EditText) findVi
public void loginButton(View v) {
EditText etEmail = (EditText) findViewById(R.id.etEmail);
EditText etPassword = (EditText) findViewById(R.id.etPassword);
email = etEmail.getText().toString();
password = etPassword.getText().toString();
if (email.length() > 0 && password.length() > 0) {
myProgress=0; //veriable for increase time
progressBar=(ProgressBar)findViewById(R.id.myProgress);
progressBar.setVisibility(0); // set visibale false to proggres bar until sign in button is pressed
/*Do some work in background thread*/
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
while(progressStatus<2)
{
progressStatus=performTask();
/* Button b = (Button) register;
b.setEnabled(false);*/
}
/*Hides the Progress bar*/
myHandler.post(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
progressBar.setVisibility(8); // set visibale true
progressStatus=0;
}
});
}
/* Do some task*/
private int performTask()
{
register.setClickable(false);
login.setClickable(false);
EtEmail.setEnabled(false);
EtPassword.setEnabled(false);
try {
//simulate doing some work
Thread.sleep(2500);
} catch (InterruptedException e)
{
e.printStackTrace();
}
return ++myProgress;
}
}).start();
tryLogin();
} else {
// Toast.makeText(this, "Please enter email and password.",
// Toast.LENGTH_LONG).show();
alertDialogThis = new AlertDialog.Builder(LoginActivity.this);
timer = new Timer();
alertDialogThis.setMessage("Please enter email and password");
dlg = alertDialogThis.create();
dlg.show();
timer.schedule(new TimerTask() {
public void run() {
dlg.dismiss(); // when the task active then close the dialog
timer.cancel(); // also just top the timer thread,
// otherwise, you may receive a crash report
}
}, 2000);
}
}
公共无效登录按钮(视图v){
EditText-etEmail=(EditText)findViewById(R.id.etEmail);
EditText etPassword=(EditText)findViewById(R.id.etPassword);
email=etEmail.getText().toString();
password=etPassword.getText().toString();
if(email.length()>0&&password.length()>0){
myProgress=0;//可验证增加时间
progressBar=(progressBar)findViewById(R.id.myProgress);
progressBar.setVisibility(0);//在按下登录按钮之前,将visibale false设置为progres bar
/*在后台线程中执行一些工作*/
新线程(newrunnable()){
@凌驾
公开募捐{
//TODO自动生成的方法存根
while(progressStatus您只需恢复登录错误处理程序中元素的可单击和已启用状态。如果在登录时出现错误,则调用类似的操作即可
private void onLoginError() {
register.setClickable(true);
login.setClickable(true);
EtEmail.setEnabled(true);
EtPassword.setEnabled(true);
}
此外,为了清晰起见,您应该使用静态常量而不是幻数来表示可见性状态。例如,要显示进度条,请使用:
progressBar.setVisibility(View.VISIBLE);
若要稍后隐藏,请使用:
progressBar.setVisibility(View.GONE);