Логин модальный - Android Studio - PullRequest
0 голосов
/ 08 мая 2018

Я делаю модальный вход в систему, если имя пользователя и пароль верны, открывается другое действие, но оно всегда дает неправильный ответ, даже если я введу правильное имя пользователя и пароль.

Это мой код:

public void Admin(View view){

    AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
    View mView = getLayoutInflater().inflate(R.layout.activity_login, null);
    final EditText username = (EditText) mView.findViewById(R.id.txt_username);
    final EditText password = (EditText) mView.findViewById(R.id.txt_password);

    final String user = username.getText().toString().trim();
    final String pass = password.getText().toString().trim();
    Button submit = (Button) mView.findViewById(R.id.btn_submit);

    final AlertDialog dialog = mBuilder.create();

    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(user.equals("admin") && (pass.equals("admin"))){
                try{
                    Intent intent = new Intent(MainActivity.this,InputActivity.class);
                    startActivity(intent);
                }catch (Exception e){
                    Toast.makeText(MainActivity.this, e.getMessage().toString(), Toast.LENGTH_SHORT).show();
                }
            }else{
                Toast.makeText(MainActivity.this, "Your Username and Password is wrong", Toast.LENGTH_SHORT).show();
            }
        }
    });

    mBuilder.setView(mView);

    dialog.show();

}

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Вы присваиваете значения пользователя и пароля до вызова события onClick кнопки отправки, поэтому значения всегда будут пустыми. Это можно исправить, переместив следующие строки в методе onClick(View view):

final String user = username.getText().toString().trim(); final String pass = password.getText().toString().trim();

0 голосов
/ 08 мая 2018

Эта 2 строка вернет пустую строку

final String user = username.getText().toString().trim();
final String pass = password.getText().toString().trim();

Потому что вы получаете текстовую форму EditText, прежде чем пользователь что-либо введет.

Что тебе на самом деле нужно? Вы должны собрать текст с EditText после нажатия кнопки подтверждения.

Так что используйте эту линию внутри OnCLickListener

    submit.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        user = username.getText().toString().trim();
        pass = password.getText().toString().trim();
        if(user.equals("admin") && (pass.equals("admin"))){
            try{
                Intent intent = new Intent(MainActivity.this,InputActivity.class);
                startActivity(intent);
            }catch (Exception e){
                Toast.makeText(MainActivity.this, e.getMessage().toString(), Toast.LENGTH_SHORT).show();
            }
        }else{
            Toast.makeText(MainActivity.this, "Your Username and Password is wrong", Toast.LENGTH_SHORT).show();
        }
    }
});
0 голосов
/ 08 мая 2018

Поместите переменные username и password в onClickedListener(). Это позволит получить текущие значения переменных. Объявите это вне Listener и поместите реализацию внутрь. Соблюдайте и попробуйте этот код. Это может помочь.

 public class MainActivity extends Activity  {
 Button b1,b2;
   EditText ed1,ed2;

   TextView tx1;
   int counter = 3;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  b1 = (Button)findViewById(R.id.button);
  ed1 = (EditText)findViewById(R.id.editText);
  ed2 = (EditText)findViewById(R.id.editText2);

  b2 = (Button)findViewById(R.id.button2);
  tx1 = (TextView)findViewById(R.id.textView3);
  tx1.setVisibility(View.GONE);

  b1.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
        if(ed1.getText().toString().equals("admin") &&
           ed2.getText().toString().equals("admin")) {try{
                Intent intent = new   Intent(MainActivity.this,InputActivity.class);
                startActivity(intent);
            }catch (Exception e){
                Toast.makeText(MainActivity.this, e.getMessage().toString(), Toast.LENGTH_SHORT).show();
            }
           }else{
              Toast.makeText(getApplicationContext(), "Wrong 
                 Credentials",Toast.LENGTH_SHORT).show();

              tx1.setVisibility(View.VISIBLE);
              tx1.setBackgroundColor(Color.RED);
              counter--;
              tx1.setText(Integer.toString(counter));

              if (counter == 0) {
                 b1.setEnabled(false);
              }
           }
     }
  });

  b2.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
        finish();
     }
  });
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...