Я пытаюсь создать приложение, в котором у пользователя есть возможность изменить свое имя, адрес электронной почты и т. Д. Несмотря на то, что я получаю правильный идентификатор пользователя, всякий раз, когда я пытаюсь обновить базу данных, приложение вылетает, говоря:
`Attempt to invoke virtual method 'com.google.firebase.database.DatabaseReference com.google.firebase.database.DatabaseReference.child(java.lang.String)' on a null object reference`
Вот мой код
public class EditProfile extends AppCompatActivity {
FirebaseAuth auth;
DatabaseReference databaseReference;
private DatabaseReference mFirebaseDatabase;
private DatabaseReference mFirebaseInstance;
String name2 , email2 ;
EditText name , email , bio;
private SlidrInterface slidr;
ImageView profilePic;
final int PICK_IMAGE_REQUEST = 71;
Uri imageUri;
Button saveButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_edit_profile);
auth = FirebaseAuth.getInstance();
databaseReference = FirebaseDatabase.getInstance().getReference();
final FirebaseUser user = auth.getCurrentUser();
name = (EditText) findViewById(R.id.name);
email = (EditText) findViewById(R.id.email);
bio = (EditText) findViewById(R.id.bio);
profilePic = (ImageView) findViewById(R.id.profilepic);
saveButton = (Button) findViewById(R.id.save);
slidr = Slidr.attach(this);
mFirebaseInstance = FirebaseDatabase.getInstance().getReference();
mFirebaseDatabase = FirebaseDatabase.getInstance().getReference();
final String userID = user.getUid();
Log.d("TAG" , "USERID = "+userID );
databaseReference.child("users").child(user.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot){
name2 = (String) dataSnapshot.child("name").getValue();
String gender = (String) dataSnapshot.child("gender").getValue();
email2 = (String) dataSnapshot.child("email").getValue();
Log.d("TAG", "Name: " +name2);
Log.d("TAG", "Email: " +email);
Log.d("TAG", "Gender: " +gender);
name.setText(name2);
email.setText(email2);
}
@Override
public void onCancelled(DatabaseError databaseError) {}
});
profilePic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
});
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String nameTest = name.getText().toString();
String emailTest = email.getText().toString();
String bioTest = bio.getText().toString();
Log.d("TAG" , "NAMETEST = "+nameTest);
mFirebaseDatabase.child(userID).child("name").setValue(nameTest);
//mFirebaseDatabase.child(user).child("bio").setValue(bioTest);
mFirebaseDatabase.child(userID).child("email").setValue(emailTest);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
&& data != null && data.getData() != null )
{
imageUri = data.getData();
//String test = filepath.toString();
//Log.d("CameraActivity" , " Path is = " +test);
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), imageUri);
//ByteArrayOutputStream stream = new ByteArrayOutputStream();
//bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
//byte[] byteArray = stream.toByteArray();
profilePic.setImageURI(imageUri);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
Я не могу понять, что здесь за null object refernce
.Я поместил записи в журнал и проверил отдельные параметры.
D/TAG: USERID = 5tI5e4Y2NeOQ7yq8DwefvmYJk713
D/TAG: Name: Darryl Fernandes
Email: fernsdarryl1@gmail.com
Gender: male
Ниже приведены изображения моей базы данных
Пожалуйста, помогите мне разобраться в этом.Спасибо
РЕДАКТИРОВАТЬ
Как вы, ребята, видите, я разделил инициализацию и объявление mFirebaseDatabase
, но все равно он не будет обновляться в firebase, даже если ошибкаушел