private Button mRegister;
private EditText mEmail, mPassword, mName;
//mName 과 mRadioGroup도(?) mRegister.setonClickListener에서 사용
private RadioGroup mRadioGroup;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener firebaseAuthStateListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
mAuth = FirebaseAuth.getInstance();
//Auth가 바뀔때마다 이 기능 수
firebaseAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
startActivity(intent);
finish();
return;
}
}
};
mRegister = (Button) findViewById(R.id.register);
mEmail = (EditText) findViewById(R.id.email);
mPassword = (EditText) findViewById(R.id.password);
mName = (EditText) findViewById(R.id.name);
mRadioGroup = (RadioGroup) findViewById(R.id.radioGroup);
mRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//라디오그룹에서 선택된 라디오 버튼 id를 가져온다 . 만약 id가 없더라도 id를 준다(?)
int selectId = mRadioGroup.getCheckedRadioButtonId();
//여기서 selectId 는 라디오그룹에서 체크된 라디오버튼 id.
final RadioButton radioButton = (RadioButton) findViewById(selectId);
//만약 라디오버튼이 아무것도 체크가 되어있지않다면 return으로 빠져나와서 사용자를 create하지 않음.
// (이 아래 로직을 실행하지 않고 return을 기점으로 바로 빠져나옴
if(radioButton.getText() ==null){
return;
}
final String email = mEmail.getText().toString();
final String password = mPassword.getText().toString();
final String name = mName.getText().toString();
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(RegistrationActivity.this,
new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//성공적이지 않을 때
if (!task.isSuccessful()) {
Toast.makeText(RegistrationActivity.this,
"sign up error", Toast.LENGTH_SHORT).show();
}
//성공적이면
else{
String userId = mAuth.getCurrentUser().getUid();
//여기 radiobutton은 selecid(라디오버튼 선택된거)
DatabaseReference currentUserDb =
FirebaseDatabase.getInstance().getReference().child("Users").child(radioButton.getText().toString()).child(userId).child("name");
//name은 EditText에 적은 이름
currentUserDb.setValue(name);
Toast.makeText(getApplicationContext(),
"환영합니다" + name + "님",Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(firebaseAuthStateListener);
}
@Override
protected void onStop() {
super.onStop();
mAuth.removeAuthStateListener(firebaseAuthStateListener);
}
}
안드로이드 한글 쓸 때마다 하나씩 잘리는거 거슬린다..
설명은 주석참고 위 코드는 회원가입코드. 로그인 코드는 createUserWithEmailAndPassword만signIn으로 대체해주면 된다( 액티비티 제외)
mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(LoginActivity.this,
new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//성공적이지 않을
if (!task.isSuccessful()) {
Toast.makeText(LoginActivity.this,
"sign in error", Toast.LENGTH_SHORT).show();
}
}
});
cf. 회원가입 오류
혹시 로그캣에 Ignoring header X-Firebase-Locale because its value was null. 라고 뜨면
와이파이 연결확인하고 다시 해볼 것
private Button mRegister;
private EditText mEmail, mPassword, mName;
//mName 과 mRadioGroup도(?) mRegister.setonClickListener에서 사용
private RadioGroup mRadioGroup;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener firebaseAuthStateListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
mAuth = FirebaseAuth.getInstance();
//Auth가 바뀔때마다 이 기능 수
firebaseAuthStateListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
Intent intent = new Intent(RegistrationActivity.this, MainActivity.class);
startActivity(intent);
finish();
return;
}
}
};
mRegister = (Button) findViewById(R.id.register);
mEmail = (EditText) findViewById(R.id.email);
mPassword = (EditText) findViewById(R.id.password);
mName = (EditText) findViewById(R.id.name);
mRadioGroup = (RadioGroup) findViewById(R.id.radioGroup);
mRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//라디오그룹에서 선택된 라디오 버튼 id를 가져온다 . 만약 id가 없더라도 id를 준다(?)
int selectId = mRadioGroup.getCheckedRadioButtonId();
//여기서 selectId 는 라디오그룹에서 체크된 라디오버튼 id.
final RadioButton radioButton = (RadioButton) findViewById(selectId);
//만약 라디오버튼이 아무것도 체크가 되어있지않다면 return으로 빠져나와서 사용자를 create하지 않음.
// (이 아래 로직을 실행하지 않고 return을 기점으로 바로 빠져나옴
if(radioButton.getText() ==null){
return;
}
final String email = mEmail.getText().toString();
final String password = mPassword.getText().toString();
final String name = mName.getText().toString();
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(RegistrationActivity.this,
new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//성공적이지 않을 때
if (!task.isSuccessful()) {
Toast.makeText(RegistrationActivity.this,
"sign up error", Toast.LENGTH_SHORT).show();
}
//성공적이면
else{
String userId = mAuth.getCurrentUser().getUid();
//여기 radiobutton은 selecid(라디오버튼 선택된거)
DatabaseReference currentUserDb =
FirebaseDatabase.getInstance().getReference().child("Users").child(radioButton.getText().toString()).child(userId).child("name");
//name은 EditText에 적은 이름
currentUserDb.setValue(name);
Toast.makeText(getApplicationContext(),
"환영합니다" + name + "님",Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
@Override
protected void onStart() {
super.onStart();
mAuth.addAuthStateListener(firebaseAuthStateListener);
}
@Override
protected void onStop() {
super.onStop();
mAuth.removeAuthStateListener(firebaseAuthStateListener);
}
}
안드로이드 한글 쓸 때마다 하나씩 잘리는거 거슬린다..
설명은 주석참고 위 코드는 회원가입코드. 로그인 코드는 createUserWithEmailAndPassword만signIn으로 대체해주면 된다( 액티비티 제외)
mAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(LoginActivity.this,
new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//성공적이지 않을
if (!task.isSuccessful()) {
Toast.makeText(LoginActivity.this,
"sign in error", Toast.LENGTH_SHORT).show();
}
}
});
cf. 회원가입 오류
혹시 로그캣에 Ignoring header X-Firebase-Locale because its value was null. 라고 뜨면
와이파이 연결확인하고 다시 해볼 것