2016-06-24 3 views
0

Я создал страницу регистрации, и я реализовал код, чтобы проверить, является ли имя пользователя пустым, и если оно должно дать сообщение об ошибке, но оно не работает. Сообщение об ошибке просто не выполняет свою работу. Я могу нажать кнопку регистрации, и если в ней нет информации, она все равно попадает в базу данных. Это код, который не работает.Студия Android, если пустое поле

if (TextUtils.isEmpty(username)) { 
    Log.d(TAG, "Username is empty. Please fill it in ."); 
} else { 
} 

RegisterActivity:

import android.app.AlertDialog; 
    import android.content.Intent; 
    import android.nfc.Tag; 
    import android.os.Bundle; 
    import android.support.v7.app.AppCompatActivity; 
    import android.text.TextUtils; 
    import android.util.Log; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.Toast; 

    import com.android.volley.RequestQueue; 
    import com.android.volley.Response; 
    import com.android.volley.toolbox.Volley; 

    import org.json.JSONException; 
    import org.json.JSONObject; 

public class RegisterActivity extends AppCompatActivity { 

private static final String TAG = "LoginActivity"; 

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

    final EditText etUsername = (EditText) findViewById(R.id.etUsername); 
    final EditText etPassword = (EditText) findViewById(R.id.etPassword); 
    final Button bRegister = (Button) findViewById(R.id.bRegister); 

    bRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      final String username = etUsername.getText().toString(); 
      final String password = etPassword.getText().toString(); 

      if (TextUtils.isEmpty(username)) { 
       Log.d(TAG, "Username is empty. Please fill it in ."); 
      } else { 

      } 

      Response.Listener<String> responseListener = new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        try { 
         JSONObject jsonResponse = new JSONObject(response); 
         boolean success = jsonResponse.getBoolean("success"); 
         if (success) { 
          Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); 
          RegisterActivity.this.startActivity(intent); 
         } else { 
          AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this); 
          builder.setMessage("User details already in use") 
            .setNegativeButton("Retry", null) 
            .create() 
            .show(); 
         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

       } 
      }; 
      RegisterRequest registerRequest = new RegisterRequest(username, password, responseListener); 
      RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this); 
      queue.add(registerRequest); 
     } 
    }); 
} 
} 
+0

Try 'если (username.equals («»))', и вы действительно должны поставить код вы хотите запустить, если есть текст найден, внутри 'else' заявление. –

ответ

0

еще часть вашей программы должна распространяться больше, чем просто пустая строка. Расширьте блок else до конца операции.

+0

или даже лучше просто добавить 'return;' сразу после оператора журнала –

0

Попробуйте этот код

public void onClick(View v) { 
     final String username = etUsername.getText().toString(); 
     final String password = etPassword.getText().toString(); 

     if (etUsername.getText().toString().trim().isEmpty()) { 
      Log.d(TAG, "Username is empty. Please fill it in ."); 
     } else { 


    Response.Listener<String> responseListener = new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      try { 
       JSONObject jsonResponse = new JSONObject(response); 
       boolean success = jsonResponse.getBoolean("success"); 
       if (success) { 
        Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); 
        RegisterActivity.this.startActivity(intent); 
       } else { 
        AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this); 
        builder.setMessage("User details already in use") 
          .setNegativeButton("Retry", null) 
          .create() 
          .show(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
    }; 
    RegisterRequest registerRequest = new RegisterRequest(username, password, responseListener); 
    RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this); 
    queue.add(registerRequest); 


     } 

Остальная часть кода должна идти в своем еще блоке.

+0

Когда я вставляю этот код и нажимаю кнопку моего регистра, он не работает –

0

Неправильно:

if (TextUtils.isEmpty(username)) { 
      Log.d(TAG, "Username is empty. Please fill it in ."); 
     } else { 

     } 

     Response.Listener<String> responseListener = new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       try { 
        JSONObject jsonResponse = new JSONObject(response); 
        boolean success = jsonResponse.getBoolean("success"); 
        if (success) { 
         Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); 
         RegisterActivity.this.startActivity(intent); 
        } else { 
         AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this); 
         builder.setMessage("User details already in use") 
           .setNegativeButton("Retry", null) 
           .create() 
           .show(); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }; 
     RegisterRequest registerRequest = new RegisterRequest(username, password, responseListener); 
     RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this); 
     queue.add(registerRequest); 

Правильно:

if (TextUtils.isEmpty(username)) 
{ 
      Log.d(TAG, "Username is empty. Please fill it in ."); 
} 
else 
{ 
     Response.Listener<String> responseListener = new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       try { 
        JSONObject jsonResponse = new JSONObject(response); 
        boolean success = jsonResponse.getBoolean("success"); 
        if (success) { 
         Intent intent = new Intent(RegisterActivity.this, LoginActivity.class); 
         RegisterActivity.this.startActivity(intent); 
        } else { 
         AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this); 
         builder.setMessage("User details already in use") 
           .setNegativeButton("Retry", null) 
           .create() 
           .show(); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }; 
     RegisterRequest registerRequest = new RegisterRequest(username, password, responseListener); 
     RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this); 
     queue.add(registerRequest); 
} 
+0

Когда я вставляю этот код и нажимаю кнопку моего регистра, он не работает –

0

Вы можете непосредственно использовать EditText, чтобы проверить пустой

public boolean checkIfEmpty(EditText edt) { 
    String str = edt.getText().toString().trim(); 
    return TextUtils.isEmpty(str) || str.length() == 0; 
} 

Вот как проверить

if (checkIfEmpty(editText)){ 
    editText.setError("Your error message"); 
    return; 
} 
+0

Я получаю сообщение об ошибке, когда я пытаюсь это сделать –

+0

import android.text.TextUtils; –

+0

Я получаю ошибку в пяти разных частях if (checkIfEmpty (editText)) { editText.setError ("Ваше сообщение об ошибке"); возвращение; } –

1

Журнал не является исключением. Это будет NOT прекратите свой метод. Журнал просто записывает сообщение. В этом случае вы регистрируете проблему, если username пуст, но вы не укажете, что делать, поэтому программа продолжается.

Есть два способа решить эту проблему.

Метод 1

Там нет ничего, что вы хотите сделать после проверки username пуст. Затем

if(TextUtils.isEmpty(username)){ 
    Log.d(TAG, "Username is empty. Please fill it in ."); 
    return; 
} 

Метод 2

Есть то, что вы хотите обработать после проверки username пуст. Затем

if(TextUtils.isEmpty(username)){ 
    Log.d(TAG, "Username is empty. Please fill it in ."); 
} else { 
    // Do something if username is not empty 
} 
// Do something no matter if username is empty or not 
+0

Это не работает im получение ошибки –

+0

@bbt Какая у вас ошибка? – Joshua

+0

Я пытаюсь положить последнюю фигурную скобку после того, как регистрация будет успешной для моего оператора else. –

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