Android Firebase身份验证java.lang.IllegalArgumentException:给定字符串为空或null

Android Firebase身份验证java.lang.IllegalArgumentException:给定字符串为空或null,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我尝试了所有其他的解决方案。获得一个新的google-services.json,检查依赖项,查看它们是否都已更新。尝试了所有可能的方法来声明和初始化变量,即使它们没有意义。还是不知道怎么了。请先看一看,谢谢 public class SignUp_Fragment extends Fragment implements OnClickListener, AdapterView.OnItemSelectedListener { private View view; private TextVi

我尝试了所有其他的解决方案。获得一个新的google-services.json,检查依赖项,查看它们是否都已更新。尝试了所有可能的方法来声明和初始化变量,即使它们没有意义。还是不知道怎么了。请先看一看,谢谢

public class SignUp_Fragment extends Fragment implements OnClickListener, AdapterView.OnItemSelectedListener {
private View view;

private TextView login;
private Button signUpButton;
private CheckBox terms_conditions;

EditText editTextFullName, editTextSignUpEmail, editTextMobile,
        editTextSignUpPassword, editTextConfirmPassword;

String signUpEmail;
String signUpPassword;
String mobile;
String fullName;

Spinner locationSpinner;

String stringLocation;

private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private User user;


private static FragmentManager fragmentManager;

public SignUp_Fragment() {

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.signup_layout, container, false);
    getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    editTextFullName = (EditText) view.findViewById(R.id.fullName);
    editTextSignUpEmail = (EditText) view.findViewById(R.id.userEmailId);
    editTextMobile = (EditText) view.findViewById(R.id.mobileNumber);
    editTextSignUpPassword = (EditText) view.findViewById(R.id.password);

    signUpEmail = editTextSignUpEmail.getText().toString();
    signUpPassword = editTextSignUpPassword.getText().toString();
    mobile = editTextMobile.getText().toString();

    mAuth = FirebaseAuth.getInstance();

    initViews();
    setListeners();


    return view;
}

// Initialize all views
private void initViews() {

    signUpButton = (Button) view.findViewById(R.id.signUpBtn);
    login = (TextView) view.findViewById(R.id.already_user);
    terms_conditions = (CheckBox) view.findViewById(R.id.terms_conditions);
    locationSpinner = (Spinner) view.findViewById(R.id.location);
    editTextConfirmPassword = (EditText) view.findViewById(R.id.confirmPassword);


    fragmentManager = getActivity().getSupportFragmentManager();


}

private void setListeners() {
    signUpButton.setOnClickListener(this);
    login.setOnClickListener(this);
}

@Override
public void onClick(View v) {



    switch (v.getId()) {
        case R.id.signUpBtn:

            // Call checkValidation method
            if (!checkValidation()) {

                new CustomToast().Show_Toast(getActivity(), view,
                        "تحقق من عدم وجود أخطاء");

            } else {

                onSignUpClicked(view);

            }

            break;

        case R.id.already_user:


            FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
            ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

            BuySell_Fragment frag = new BuySell_Fragment();

            ft.replace(R.id.frameContainer, frag);
            ft.addToBackStack(null);
            ft.commit();

            break;
    }

}

private boolean checkValidation() {

    String signUpEmail = editTextSignUpEmail.getText().toString();
    String signUpPassword = editTextSignUpPassword.getText().toString();
    String mobile = editTextMobile.getText().toString();
    String confirmPassword = editTextConfirmPassword.getText().toString();
    String fullName = editTextFullName.getText().toString();


    Pattern p = Pattern.compile(Utils.regEx);
    Matcher m = p.matcher(signUpEmail);

    String phoneRegex = (Utils.phoneRegEx);

    if (fullName.equals("") || fullName.length() == 0
            || signUpEmail.equals("") || signUpEmail.length() == 0
            || mobile.equals("") || mobile.length() == 0
            || signUpPassword.equals("") || signUpPassword.length() == 0
            || confirmPassword.equals("")
            || confirmPassword.length() == 0) {

        new CustomToast().Show_Toast(getActivity(), view,
                "جميع الخانات مطلوبة");

        return false;
    }

    // Check if email id valid or not
    else if (!m.find()) {

        new CustomToast().Show_Toast(getActivity(), view,
                "الايميل غير صحيح");

        return false;
    } else if (!mobile.matches(phoneRegex)) {

        new CustomToast().Show_Toast(getActivity(), view,
                "رقم الهاتف غير صحيح");

        return false;
    }


    // Check if both password should be equal
    else if (!confirmPassword.equals(signUpPassword)) {
        new CustomToast().Show_Toast(getActivity(), view,
                "كلمة السر غير متطابقة");
    }

    // Make sure user should check Terms and Conditions checkbox
    else if (!terms_conditions.isChecked()) {

        new CustomToast().Show_Toast(getActivity(), view,
                "المرجو الموافقة على الشروط و الاحكام");

        return false;
    }


    return true;
}


@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

    String location = parent.getItemAtPosition(position).toString();
    stringLocation = location;


}

@Override
public void onNothingSelected(AdapterView<?> adapterView) {

}

protected void setUpUser() {
    user = new User();
    user.setName(fullName);
    user.setPhoneNumber(mobile);
    user.setEmail(signUpEmail);
    user.setPassword(signUpPassword);
}

public void onSignUpClicked(View view) {
    createNewAccount(signUpEmail, signUpPassword);

}



private void createNewAccount(String email, String password) {

    checkValidation();


    setUpUser();

    mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {

            if (!task.isSuccessful()) {
                new CustomToast().Show_Toast(getActivity(), view,
                        "محاولة تسجبل فاشلة");
            } else {
                onAuthenticationSucess(task.getResult().getUser());
                new CustomToast().Show_Toast(getActivity(), view,
                        "تم تسجيل حساب بنجاح!");
            }


        }
    });

}

private void onAuthenticationSucess(FirebaseUser mUser) {
    saveNewUser(mUser.getUid(), user.getName(), user.getPhoneNumber(), user.getEmail(), user.getPassword());
    signOut();

    FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

    Login_Fragment frag = new Login_Fragment();

    ft.replace(R.id.frameContainer, frag);
    ft.addToBackStack(null);
    ft.commit();
}

private void saveNewUser(String userId, String name, String phone, String email, String password) {
    User user = new User(userId, name, phone, email, password);


}


private void signOut() {
    mAuth.signOut();
}




@Override
public void onDetach() {
    super.onDetach();

    try {
        Field fragmentManager = Fragment.class.getDeclaredField("mFragmentManager");
        fragmentManager.setAccessible(true);
        fragmentManager.set(this, null);

    } catch (NoSuchFieldException e) {
        throw new RuntimeException(e);
    } catch (IllegalAccessException e) {
        throw new RuntimeException(e);
    }
}


public void onDestroy() {
    super.onDestroy();

}

}
日志:

java.lang.IllegalArgumentException: Given String is empty or null

at com.google.android.gms.common.internal.zzac.zzdr(Unknown Source)

at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(Unknown Source)

at edu.seu.seniorproject.producingfamily.fragments.SignUp_Fragment.createNewAccount(SignUp_Fragment.java:250)

at edu.seu.seniorproject.producingfamily.fragments.SignUp_Fragment.onSignUpClicked(SignUp_Fragment.java:237)

at edu.seu.seniorproject.producingfamily.fragments.SignUp_Fragment.onClick(SignUp_Fragment.java:128)

at android.view.View.performClick(View.java:5198)

at android.view.View$PerformClick.run(View.java:21147)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:148)

at android.app.ActivityThread.main(ActivityThread.java:5417)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

E/AndroidRuntime: FATAL EXCEPTION: main
Process: edu.seu.seniorproject.producingfamily, PID: 31055
java.lang.IllegalArgumentException: Given String is empty or null

at com.google.android.gms.common.internal.zzac.zzdr(Unknown Source)

at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(Unknown Source)

at edu.seu.seniorproject.producingfamily.fragments.SignUp_Fragment.createNewAccount(SignUp_Fragment.java:250)

at edu.seu.seniorproject.producingfamily.fragments.SignUp_Fragment.onSignUpClicked(SignUp_Fragment.java:237)

at edu.seu.seniorproject.producingfamily.fragments.SignUp_Fragment.onClick(SignUp_Fragment.java:128)

at android.view.View.performClick(View.java:5198)

at android.view.View$PerformClick.run(View.java:21147)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:148)

at android.app.ActivityThread.main(ActivityThread.java:5417)

at java.lang.reflect.Method.invoke(Native Method)

at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

您没有正确管理
signUpEmail
signUpPassword
。它们在类级别声明,并在
onCreateView()中初始化:

此时,用户尚未在
编辑文本中输入任何字符,且字符串为空

稍后,在
checkValidation()
中,您再次获得
editText
的内容,但错误地将结果存储在局部变量而不是类级变量中:

private boolean checkValidation() {
    String signUpEmail = editTextSignUpEmail.getText().toString();
    String signUpPassword = editTextSignUpPassword.getText().toString();
private boolean checkValidation() {
    signUpEmail = editTextSignUpEmail.getText().toString();
    signUpPassword = editTextSignUpPassword.getText().toString();
当您尝试创建帐户时,您使用的是类级别变量,这些变量仍然为空

更改
checkValidation()
以使用类级变量而不是局部变量:

private boolean checkValidation() {
    String signUpEmail = editTextSignUpEmail.getText().toString();
    String signUpPassword = editTextSignUpPassword.getText().toString();
private boolean checkValidation() {
    signUpEmail = editTextSignUpEmail.getText().toString();
    signUpPassword = editTextSignUpPassword.getText().toString();

我觉得自己很愚蠢。我想我还需要一双眼睛谢谢你!