2013-03-29 5 views
0

Я пытаюсь сделать регистрационную форму приложения для Android. Я сделал адаптер базы данных и использовал MySQLite.Проверка пустых записей EditText и проверка его

Проблема, с которой я столкнулась, - это проверка записей, введенных в элементы управления EditText. Когда я нажимаю кнопку «Зарегистрироваться», информация должна храниться в базе данных, удостоверяясь, что записи не пусты, пароль подтверждения совпадает с паролем, и самое главное, что имя пользователя еще не используется. Я пробовал каждый отдельный способ сделать это, но это либо то, что я получаю ошибку времени выполнения, либо проверки не работают так, как я хочу.

final EditText unedit = (EditText) findViewById(R.id.unedit); 
    final EditText passedit = (EditText) findViewById(R.id.passedit); 
    final EditText conpassedit = (EditText) findViewById(R.id.conpassedit); 
    final EditText nameedit = (EditText) findViewById(R.id.nameedit); 
    final EditText emailedit = (EditText) findViewById(R.id.emailedit); 
    final EditText mobedit = (EditText) findViewById(R.id.mobedit); 

    Button register = (Button) findViewById(R.id.registerbutton); 

    register.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      String username = unedit.getText().toString(); 
      String password = passedit.getText().toString(); 
      String conpassword = conpassedit.getText().toString(); 
      String name = nameedit.getText().toString(); 
      String email = emailedit.getText().toString(); 
      String mobileno = mobedit.getText().toString(); 

      RegDb reg = new RegDb(Register.this); 
      reg.open(); 
      String returnedUn = reg.getUn(username); 
      reg.close(); 

      if (username.isEmpty()) { 
       unedit.setError("Username is required"); 
       // return; 
      } 
      if (password.isEmpty()) { 
       passedit.setError("Password is required"); 
       // return; 
      } 
      if (conpassword.isEmpty()) { 
       conpassedit.setError("Password confirmation is required"); 
       // return; 
      } 
      if (name.isEmpty()) { 
       nameedit.setError("Name is required"); 
       // return; 
      } 
      if (email.isEmpty()) { 
       emailedit.setError("Email is required"); 
       // return; 
      } 
      if (mobileno.isEmpty()) { 
       mobedit.setError("Mobile No is required"); 
       // return; 
      } 
      if (username.equals(returnedUn)) { 
       unedit.setError("Username is already used"); 
       // return; 
      } 
      if (!conpassword.equals(password)) { 
       passedit.setError("Check your password"); 
       // return; 
      } 
      if (!username.isEmpty() && !password.isEmpty() 
        && !name.isEmpty() && !email.isEmpty() 
        && !mobileno.isEmpty() && conpassword.equals(password) 
        && !username.equals(returnedUn)) { 
       Dialog d = new Dialog(v.getContext()); 
       d.setTitle("Account created."); 
       d.show(); 
      } else { 
       return; 
      } 

Я также использовал try-catch-finally, но проверки, похоже, не могут работать.

boolean created = true; 

       try { 

        if (!username.isEmpty() && !password.isEmpty() 
        && !name.isEmpty() && !email.isEmpty() 
        && !mobileno.isEmpty() && conpassword.equals(password) 
        && !username.equals(returnedUn)){ 
        RegDb entry = new RegDb(Register.this); 
        entry.open(); 
        entry.createEntry(username, password, name, email, 
          mobileno); 

        entry.close(); 
       } 

      } catch (Exception e) { 
       created=false; 
       Dialog d = new Dialog(v.getContext()); 
       d.setTitle("Please check your entries."); 
       d.show(); 

      } finally { 
       if (created) { 
        Dialog d = new Dialog(v.getContext()); 
        d.setTitle("Account created."); 

        Intent i = new Intent(v.getContext(), 
          MainActivity.class); 
        startActivity(i); 

       } 
      } 

Просьба просветить меня тем, что я делаю неправильно, и что делать.

+0

http://stackoverflow.com/questions/6290531/check-if-edittext-is-empty –

ответ

0

Прежде всего, вам не нужно объявлять этот путь final EditText unedit = (EditText) findViewById(R.id.unedit);

вы можете объявить их на уровне класса

private EditText unedit; 

Сейчас на OnCreate() метод доступа он, используя следующий путь,

unedit = (EditText) findViewById(R.id.unedit); 

и проверьте строковые переменные следующим образом:

String username = unedit.getText().toString().trim(); // Add Trim() method 

if (username.equals("")) { 
       unedit.setError("Username is required"); 
       // return; 
      } 

такой же для всех прочее.

+0

Спасибо! Я это рассмотрю. Но что, если я захочу продолжить хранить значения в базе данных, как я могу проверить, что все строки не пустые, имя пользователя не существует в базе данных, а пароль подтверждения равен паролю? –

+0

просто проверьте строку перед хранением в db. – Raynold

Смежные вопросы