Firebase를 사용 중이며 로그인/로그인 활동이 정상적으로 작동하지만 각 사용자가 사용자 이름을 업데이트해야합니다. 나는 응용 프로그램 에뮬레이터에서 "불행하게도, 응용 프로그램이 중지되었습니다"의 오류가 발생하고Android Firebase - getUid()를 사용하여 사용자 ID를 가져올 수 없습니다. - 오류 : null 객체 참조시
firebaseRef.getAuth().getUid()
: 내가 실행할 수 없습니다입니다 보인다.
모니터에서 안드로이드 스튜디오에 발생하는 주요 오류와 같습니다. getUid()와 관련이 있습니다.
java.lang.NullPointerException 오 : 널 객체 참조 여기
에 ') java.lang.String의 com.firebase.client.AuthData.getUid ('가상 메소드를 호출 시도 내 활성 코드 :
package me.netsync.netconnect;
import android.app.ActionBar;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.firebase.client.AuthData;
import com.firebase.client.Firebase;
public class SettingActivity extends AppCompatActivity {
private Firebase mRef;
private Button BtnSettings;
private EditText TxtUsername;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_setting);
mRef = new Firebase(Constants.FIREBASE_URL);
BtnSettings = (Button)findViewById(R.id.BtnSettings);
BtnSettings.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// username txt update the profile
TxtUsername = (EditText)findViewById(R.id.TxtUsername);
String TxtUsernameStr = TxtUsername.getText().toString();
TxtUsernameStr = TxtUsernameStr.trim();
// check we can get a userid
/* if(mRef.getAuth() == null){
Intent intent = new Intent(SettingActivity.this,LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}*/
if(TxtUsernameStr.isEmpty()){
// show a dialog box
AlertDialog.Builder builder = new AlertDialog.Builder(SettingActivity.this);
builder.setMessage("Please make sure you enter a Username" + TxtUsernameStr)
.setTitle("Error!")
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}else{
Firebase upDateUserProfile = new Firebase(Constants.FIREBASE_URL);
String uid = upDateUserProfile.getAuth().getUid();
User user = new User(TxtUsernameStr);
upDateUserProfile.child("users").child(uid).child("username").setValue(user);
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
int btn = item.getItemId();
if(btn == R.id.action_logout){
mRef.unauth();
Intent intent = new Intent(this,LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
}
if(btn == R.id.action_settings){
mRef.unauth();
Intent intent = new Intent(this,SettingActivity.class);
startActivity(intent);
}
return true;
}
}
감사합니다. 앱 build.gradle에서
확인을 위해 Firebase의 간단한 이메일/비밀번호 로그인을 사용하고 있습니다. – user3200080
[null 참조가 무엇입니까] (http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – noev
즉, AuthData null입니다 의미합니다 당신은 정말로 사용자가 기록 되었습니까? getAuth가 null인지 확인하십시오. [이 링크보기] (https://www.firebase.com/docs/android/guide/user-auth.html) 새로운 Firebase SDK를 사용하는 것이 좋습니다. – Borja