새 사용자를 등록하기 위해 등록 단추를 클릭하면 다음과 같은 동작이 나타납니다.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
}
죄송합니다. 도움이되지 않았습니다. – Kristjan