2017-12-07 7 views
0

새 사용자를 등록하기 위해 등록 단추를 클릭하면 다음과 같은 동작이 나타납니다.FirebaseAuth가 null을 반환합니다.

오류 : 가상 메서드 'com.google.android.gms.tasks.Task com.google.android.gms.common.api.GoogleApi.zzb을 (호출

시도 닷컴 에러 .google.android.gms.common.api.internal.zzdf) '널 객체 참조에

출처 :

com.example.cmd.pop.Fragments.RegisterFragment $ 1.onClick (RegisterFragment.java:64)

에서 그리고 그것은이 라인을 가리키는 :

mAuth.createUserWithEmailAndPassword(mail,pass) 
           .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() 

RegisterFragment 클래스 :

public class RegisterFragment extends Fragment { 
private EditText mMail,mPass,mPassConf; 
private Button mLogin,mRegister; 
private FirebaseAuth mAuth; 
private String mail,pass,passConf; 

public RegisterFragment() { 
    mAuth = FirebaseAuth.getInstance(); 
} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.register_fragment_layout,container,false); 
    find(v); 
    onClick(); 
    return v; 
} 

private void find(View v) { 
    mMail = (EditText)v.findViewById(R.id.registerName); 
    mPass = (EditText)v.findViewById(R.id.registerPassword); 
    mPassConf = (EditText)v.findViewById(R.id.registerPasswordConfirmation); 
    mLogin = (Button)v.findViewById(R.id.btnLoginRegister); 
    mRegister = (Button)v.findViewById(R.id.btnRegisterRegister); 
} 

private void onClick() { 
    mRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      mail = mMail.getText().toString(); 
      pass = mPass.getText().toString(); 
      passConf = mPassConf.getText().toString(); 
      if(!isEmpty(mail) && !isEmpty(pass) && !isEmpty(passConf)) { 
       if(TextUtils.equals(pass,passConf)) { 
        mAuth.createUserWithEmailAndPassword(mail,pass) 
          .addOnCompleteListener(getActivity(), new OnCompleteListener<AuthResult>() { 
           @Override 
           public void onComplete(@NonNull Task<AuthResult> task) { 
            if (task.isSuccessful()) { 
             getActivity().startActivity(new Intent(getActivity(), MainActivity.class)); 
             getActivity().finish(); 
            } else { 
             Toast.makeText(getActivity(), "Error registering....", Toast.LENGTH_SHORT).show(); 
            } 
           } 
          }); 

       } else { 
        Toast.makeText(getActivity(), "Password didn't match.", Toast.LENGTH_SHORT).show(); 
       } 
      } else { 
       Toast.makeText(getActivity(), "All fields need to be filled.", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 

    mLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Fragment loginFragment = new LoginFragment(); 
      getActivity().getSupportFragmentManager().beginTransaction() 
        .replace(R.id.loginActivityContainer,loginFragment).commit(); 

     } 
    }); 

} 

private boolean isEmpty(String name) { 
    return TextUtils.isEmpty(name); 
} 

응용 프로그램 수준 Gradle을

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 26 
    buildToolsVersion "27.0.0" 
    defaultConfig { 
     applicationId "com.example.cmd.pop" 
     minSdkVersion 19 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
    implementation 'com.android.support:appcompat-v7:26.1.0' 
    implementation 'com.android.support.constraint:constraint-layout:1.0.2' 
    implementation 'com.android.support:support-v4:26.1.0' 
    implementation 'com.google.firebase:firebase-database:11.6.0' 
    implementation 'com.google.firebase:firebase-auth:11.6.0' 
    compile 'com.android.support:design:26.1.0' 
    compile 'com.android.support:cardview-v7:26.1.0' 
    compile 'com.android.support:recyclerview-v7:26.1.0' 
    testImplementation 'junit:junit:4.12' 
    androidTestImplementation('com.android.support.test.espresso:espresso-core:3.0.1', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
} 




apply plugin: 'com.google.gms.google-services' 

프로젝트 레벨 Gradle을

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 

    repositories { 
     google() 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:3.1.0-alpha03' 


     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
     classpath 'com.google.gms:google-services:3.1.0' 
    } 
} 

allprojects { 
    repositories { 
     google() 
     jcenter() 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

답변

0

당신은 내가 해결 콘솔

implementation 'com.google.firebase:firebase-auth: 9.6.0' 
+0

죄송합니다. 도움이되지 않았습니다. – Kristjan

0

이메일/비밀번호를 사용할 확인한 후에 이전 버전으로 중포 기지를 다운 그레이드 시도 오류, 문제는 에뮬레이터에서 내 에뮬레이터에서 Google Play 서비스를 업데이트해야했습니다. 모든 것을 잘 업데이트 한 후에.