Как снова включить отключенные компоненты

Когда вы нажимаете кнопку "Войти", запускайте панель прогрэсов до тех пор, пока я не захожу. Когда отображается индикатор выполнения, отключаются все тексты и кнопки редактирования, но если пользователь неверно указал свое имя или пароль, поля остаются отключенными. Моя проблема в том, где я могу установить включение для моих компонентов. Вот код:

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

    }

1 ответ

Вам просто нужно вернуть кликабельные и включенные состояния для элементов в вашем обработчике ошибок входа в систему. Нечто подобное будет работать, если вызывается при возникновении ошибки входа в систему.

private void onLoginError() {
    register.setClickable(true);
    login.setClickable(true);
    EtEmail.setEnabled(true);
    EtPassword.setEnabled(true);
}

Кроме того, для ясности вы должны использовать статические константы вместо магических чисел для таких вещей, как состояние видимости. Например, чтобы показать индикатор выполнения, используйте:

progressBar.setVisibility(View.VISIBLE);

и чтобы скрыть это позже, используйте:

progressBar.setVisibility(View.GONE);
Другие вопросы по тегам