Я делаю приложение, в котором пользователь регистрируется, используя rest api
. api
работает успешно, но у меня возникла проблема, когда пользователь вводит тот же адрес электронной почты во второй раз для регистрации пользователя сбой приложения. Я не понимаю, как сделать проверку, которая говорит, что электронная почта уже существует. Вот мой код, где я регистрирую пользователя.
private void userSignup(){
String user_type = String.valueOf(radiogroup.getCheckedRadioButtonId());
String directory_type = spinner.getSelectedItem().toString();
String username = edit_username.getText().toString().trim();
final String email = edit_email.getText().toString().trim();
String first_name = edit_firstname.getText().toString().trim();
String last_name = edit_lastname.getText().toString().trim();
String phone = edit_Phone.getText().toString().trim();
String password = edit_password.getText().toString().trim();
String confirm_password = edit_retypePassword.getText().toString().trim();
if (username.isEmpty()){
edit_username.setError("User Name is Required");
edit_username.requestFocus();
return;
}
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()){
edit_email.setError("Enter a valid Email");
edit_email.requestFocus();
return;
}
if (first_name.isEmpty()){
edit_firstname.setError("First Name is Required");
edit_firstname.requestFocus();
return;
}
if (last_name.isEmpty()){
edit_lastname.setError("Last Name is Required");
edit_lastname.requestFocus();
return;
}
if (!Patterns.PHONE.matcher(phone).matches()){
edit_Phone.setError("Enter a valid Phone NO.");
edit_Phone.requestFocus();
return;
}
if (password.isEmpty()){
edit_password.setError("Password required");
edit_password.requestFocus();
return;
}
if (password.length() < 6){
edit_password.setError("Password should be atleast 6 characters");
edit_password.requestFocus();
return;
}
if (!confirm_password.equals(password)){
edit_retypePassword.setError("Error in Password matching please check");
edit_retypePassword.requestFocus();
return;
}
if (confirm_password.isEmpty()){
edit_retypePassword.setError("Retype password is required");
edit_retypePassword.requestFocus();
return;
}
if(!TextUtils.isEmpty(user_type) || !TextUtils.isEmpty(directory_type) ||
!TextUtils.isEmpty(username) || !TextUtils.isEmpty(email) ||
!TextUtils.isEmpty(first_name) || !TextUtils.isEmpty(last_name) ||
!TextUtils.isEmpty(phone) || !TextUtils.isEmpty(password) ||
!TextUtils.isEmpty(confirm_password)){
mRegProgress.setTitle("Registering User");
mRegProgress.setMessage("Please wait while we create your account !");
mRegProgress.setCanceledOnTouchOutside(false);
mRegProgress.show();
// RetrofitUtil.createProviderAPI().createUser(user_type ,directory_type , username , email , first_name , last_name , phone , password , confirm_password).enqueue(SignupUser(this));
retrofit2.Call<ResponseBody> call = RetrofitClient.getInstance()
.getApi().createUser(user_type ,directory_type , username , email , first_name , last_name , phone , password , confirm_password);
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
mRegProgress.dismiss();
String s = response.body().toString();
Toast.makeText(Signup_Activity.this , "User Added Successfully", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(Signup_Activity.this , t.getMessage() , Toast.LENGTH_SHORT).show();
}
});
}
}
Вот мой api
звонок ...
@FormUrlEncoded
@POST("user/do_signup")
Call<ResponseBody> createUser(
@Field("user_type") String user_type,
@Field("directory_type") String directory_type,
@Field("username") String username,
@Field("email") String email,
@Field("first_name") String first_name,
@Field("last_name") String last_name,
@Field("phone") String phone,
@Field("password") String password,
@Field("confirm_password") String confirm_password
);
вот лог ....
01-22 18:07:39.096 21582-21603/? E/AudioALSAPlaybackHandlerBase: openPcmDriver(), pcm_start(0xea013780) fail due to cannot start channel: Broken pipe
01-22 18:07:39.156 21582-21603/? E/AudioALSAPlaybackHandlerBase: -getHardwareBufferInfo pcm_get_htimestamp fail, ret = -1, pcm_get_error = cannot start channel: Broken pipe
01-22 18:07:39.159 21582-21603/? E/AudioALSAPlaybackHandlerBase: -getHardwareBufferInfo pcm_get_htimestamp fail, ret = -1, pcm_get_error = cannot start channel: Broken pipe
01-22 18:07:39.168 21582-21603/? E/AudioFlinger: getNextBuffer, get null buffer
01-22 18:07:39.235 1009-1009/? E/WifiTrafficPoller: TRAFFIC_STATS_POLL true Token 1147 num clients 15
01-22 18:07:39.235 1009-1009/? E/WifiTrafficPoller: packet count Tx=800555 Rx=1296057
01-22 18:07:39.235 1009-1009/? E/WifiTrafficPoller: notifying of data activity 2
01-22 18:07:40.236 1009-1009/? E/WifiTrafficPoller: TRAFFIC_STATS_POLL true Token 1147 num clients 15
01-22 18:07:40.236 1009-1009/? E/WifiTrafficPoller: packet count Tx=800556 Rx=1296059
01-22 18:07:40.236 1009-1009/? E/WifiTrafficPoller: notifying of data activity 3
01-22 18:07:40.437 1009-1292/? E/WifiConfigStore: updateConfiguration freq=2427 BSSID=40:ee:dd:ac:a9:e8 RSSI=-56 "HUAWEI-XkKR"WPA_PSK
01-22 18:07:41.237 1009-1009/? E/WifiTrafficPoller: TRAFFIC_STATS_POLL true Token 1147 num clients 15
01-22 18:07:41.237 1009-1009/? E/WifiTrafficPoller: packet count Tx=800556 Rx=1296059
01-22 18:07:41.237 1009-1009/? E/WifiTrafficPoller: notifying of data activity 0
01-22 18:07:42.238 1009-1009/? E/WifiTrafficPoller: TRAFFIC_STATS_POLL true Token 1147 num clients 15
01-22 18:07:42.240 1009-1009/? E/WifiTrafficPoller: packet count Tx=800556 Rx=1296059
01-22 18:07:42.626 8508-8508/com.example.saadhashmi.docdirect E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.saadhashmi.docdirect, PID: 8508
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at com.example.saadhashmi.docdirect.Activities.Signup_Activity$4.onResponse(Signup_Activity.java:222)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:819)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:210)
at android.app.ActivityThread.main(ActivityThread.java:5982)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:852)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:742)
01-22 18:07:42.674 1009-15376/? E/ReportTools: This is not beta user build
01-22 18:07:42.808 1009-2455/? E/HsmCoreServiceImpl: onTransact in code is: 102
01-22 18:07:42.878 1009-2117/? E/WifiMonitor: handleEvent unknown: 14 CTRL-EVENT-SCAN-STARTED
01-22 18:07:42.911 2570-3200/? E/CellLocation: create GsmCellLocation
01-22 18:07:43.089 8722-8722/com.example.saadhashmi.docdirect E/MultiWindowProxy: getServiceInstance failed!