2015-01-26 4 views
0

Я создаю приложение для Android, и открытая активность будет введена в виде пароля. Для того, чтобы знать, пароль уже установлен в переменной со значением «признать». Я создал оператор if, чтобы проверить, какое значение вводил пользователь, а затем сравнить его с переменной, и если значения совпадают, перейдите на главный экран, однако он продолжает говорить, что это неправильный пароль. Может ли кто-нибудь взглянуть на мой код и посоветовать, я ошибаюсь.Простая проверка пароля для Android не работает

public class Password extends ActionBarActivity implements View.OnClickListener { 
    protected String password = "admin"; 
    String getPassword; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_password); 
     Button passwordButton = (Button) findViewById(passwordbutton); 
     EditText passwordInput = (EditText) findViewById(R.id.password); 
     getPassword = (passwordInput.getText().toString()); 
     passwordButton.setOnClickListener(this); 

    } 

    public void onClick(View v) { 

     if (getPassword.equals(password)) { 
      Intent goHome; 
      goHome = new Intent(this, home.class); 
      startActivity(goHome); 
     } else { 
      AlertDialog.Builder wrongPasswordBuilder = new AlertDialog.Builder(this); 
      wrongPasswordBuilder.setTitle(getString(R.string.wrongPasswordTitle)); 
      wrongPasswordBuilder.setMessage(getString(R.string.wrongPasswordTryAgain)); 
      wrongPasswordBuilder.setPositiveButton("ok", null); 
      AlertDialog dialog = wrongPasswordBuilder.show(); 
     } 
    } 
+0

'GetPassword = (passwordInput.getText() ToString().),' Это не делать то, что вы думаете, что он делает. – njzk2

ответ

1

Место getPassword = passwordInput.getText().toString(); в вашем OnClickListener. Прямо сейчас ваша переменная getPassword устанавливается в вашем методе onCreate, поэтому всегда будет установлено значение вашего значения по умолчанию для EditText. Вместо этого вам нужно обновлять переменную каждый раз, когда нажимается кнопка.

1
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_password); 
Button passwordButton = (Button) findViewById(passwordbutton); 
EditText passwordInput = (EditText) findViewById(R.id.password); 

passwordButton.setOnClickListener(this); 

}

public void onClick(View v) { 
//Place the getPassword variable in the onClick method. That way it's stored everytime you click it. 
getPassword = (passwordInput.getText().toString()); 

if (getPassword.equals(password)) { 
    Intent goHome; 
    goHome = new Intent(this, home.class); 
    startActivity(goHome); 
} else { 
    AlertDialog.Builder wrongPasswordBuilder = new AlertDialog.Builder(this); 
    wrongPasswordBuilder.setTitle(getString(R.string.wrongPasswordTitle)); 
    wrongPasswordBuilder.setMessage(getString(R.string.wrongPasswordTryAgain)); 
    wrongPasswordBuilder.setPositiveButton("ok", null); 
    AlertDialog dialog = wrongPasswordBuilder.show(); 
    } 
} 
+0

Спасибо за быстрый ответ и помогите всем, глупая ошибка, когда она будет указана! – uniStudent

2

Если вы пишете passwordInput.getText ToString().() В OnCreate(), он всегда возвращает пустую строку. Поэтому напишите эти строки в onClick(). Код написан ниже

public void onClick(View v) { 
getPassword = passwordInput.getText().toString() 
if (getPassword.equals(password)) { 
    Intent goHome; 
    goHome = new Intent(this, home.class); 
    startActivity(goHome); 
} else { 
    AlertDialog.Builder wrongPasswordBuilder = new AlertDialog.Builder(this); 
    wrongPasswordBuilder.setTitle(getString(R.string.wrongPasswordTitle)); 
    wrongPasswordBuilder.setMessage(getString(R.string.wrongPasswordTryAgain)); 
    wrongPasswordBuilder.setPositiveButton("ok", null); 
    AlertDialog dialog = wrongPasswordBuilder.show(); 
     } 
}