gpt4 book ai didi

java - 应用程序因向 FirebaseDatabase.getReference() 传递空值而崩溃

转载 作者:行者123 更新时间:2023-11-29 22:50:33 25 4
gpt4 key购买 nike

希望你能帮我解决我的错误。我仍在开发我的登录应用程序,直到现在该应用程序运行良好,尽管存在一些小错误。到目前为止,用户可以登录、登录和更改他的个人资料信息。在最后的步骤中,我还实现了删除用户信息的功能。同时,删除功能也起作用,以便从 FirebaseAuth 和 FirebaseRealtimeDatabase 中删除用户信息。问题出现在删除用户信息后;应用程序崩溃。

日志:

09-17 16:56:31.108 19975-19975/com.example.login E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.login, PID: 19975
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.login/com.example.login.ProfileActivity}: java.lang.NullPointerException: Can't pass null for argument 'pathString' in FirebaseDatabase.getReference()
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2464)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524)
at android.app.ActivityThread.access$900(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:234)
at android.app.ActivityThread.main(ActivityThread.java:5526)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Can't pass null for argument 'pathString' in FirebaseDatabase.getReference()
at com.google.firebase.database.FirebaseDatabase.getReference(com.google.firebase:firebase-database@@19.0.0:164)
at com.example.login.ProfileActivity.onCreate(ProfileActivity.java:49)
at android.app.Activity.performCreate(Activity.java:6285)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2417)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2524)
at android.app.ActivityThread.access$900(ActivityThread.java:154)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1391)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:234)
at android.app.ActivityThread.main(ActivityThread.java:5526)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

个人资料 Activity :

public class ProfileActivity extends AppCompatActivity {

private TextView profilVorname,profilNachname,profilStrasse,profilHNr,profilPlz,profilStadt,profilLand;
private Button profilUpdate,PasswortUpdate;
private FirebaseAuth firebaseAuth;
private FirebaseDatabase firebaseDatabase;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);

profilVorname= findViewById(R.id.textViewPVorname);
profilNachname=findViewById(R.id.textViewPNachname);
profilUpdate=findViewById(R.id.buttonProfilUpdate);
profilStrasse=findViewById(R.id.textViewPStrasse);
profilHNr=findViewById(R.id.textViewPHNr);
profilPlz=findViewById(R.id.textViewPPlz);
profilStadt=findViewById(R.id.textViewPStadt);
profilLand=findViewById(R.id.textViewPLand);
PasswortUpdate=findViewById(R.id.buttonPasswordUpdate);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);

firebaseAuth=FirebaseAuth.getInstance();
firebaseDatabase= FirebaseDatabase.getInstance();

DatabaseReference databaseReference= firebaseDatabase.getReference(firebaseAuth.getUid());

databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
UserProfil userProfil=dataSnapshot.getValue(UserProfil.class);
profilVorname.setText(userProfil.getVorname());
profilNachname.setText(userProfil.getNachname());
profilStrasse.setText(userProfil.getStrasse());
profilHNr.setText(userProfil.getHnr());
profilPlz.setText(userProfil.getPlz());
profilStadt.setText(userProfil.getStadt());
profilLand.setText(userProfil.getLand());

}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(ProfileActivity.this,"Database Error",Toast.LENGTH_SHORT).show();
}
});



profilUpdate.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
startActivity(new Intent(ProfileActivity.this,UpdateProfilActivity.class));

}
});

PasswortUpdate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(ProfileActivity.this,UpdatePasswortActivity.class));
}
});
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case android.R.id.home:
onBackPressed();
}
return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {
super.onBackPressed();
startActivity(new Intent(ProfileActivity.this, NavActivity.class));
}

更新配置文件 Activity :

public class UpdateProfilActivity extends AppCompatActivity {

private EditText newUserVorname, newUserNachname,newUserStrasse,newUserHnr,newUserPlz,newUserStadt,newUserLand;
private Button speichern;
private FirebaseAuth firebaseAuth;
private FirebaseDatabase firebaseDatabase;
private TextView loeschen;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_profil);

newUserVorname=findViewById(R.id.editTextVornameUpdate);
newUserNachname=findViewById(R.id.editTextNachnameUpdate);
newUserStrasse=findViewById(R.id.editTextStrasse);
newUserHnr=findViewById(R.id.editTextHNr);
newUserPlz=findViewById(R.id.editTextPlz);
newUserStadt=findViewById(R.id.editTextStadt);
newUserLand=findViewById(R.id.editTextLand);
speichern=findViewById(R.id.buttonSpeichern);
loeschen=findViewById(R.id.textViewLoeschen);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowTitleEnabled(false);

firebaseAuth= FirebaseAuth.getInstance();
firebaseDatabase= FirebaseDatabase.getInstance();

final DatabaseReference databaseReference= firebaseDatabase.getReference(firebaseAuth.getUid());

databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
UserProfil userProfil=dataSnapshot.getValue(UserProfil.class);
newUserVorname.setText(userProfil.getVorname());
newUserNachname.setText(userProfil.getNachname());
newUserStrasse.setText(userProfil.getStrasse());
newUserHnr.setText(userProfil.getHnr());
newUserPlz.setText(userProfil.getPlz());
newUserStadt.setText(userProfil.getStadt());
newUserLand.setText(userProfil.getLand());
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(UpdateProfilActivity.this,"Database Error",Toast.LENGTH_SHORT).show();
}
});

speichern.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
String Vorname = newUserVorname.getText().toString();
String Nachname = newUserNachname.getText().toString();
String Strasse = newUserStrasse.getText().toString();
String HNr = newUserHnr.getText().toString();
String Plz = newUserPlz.getText().toString();
String Stadt = newUserStadt.getText().toString();
String Land = newUserLand.getText().toString();


UserProfil userProfil=new UserProfil(Vorname,Nachname,Strasse,HNr,Plz,Stadt,Land);

databaseReference.setValue(userProfil);

finish();


}
});

loeschen.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

FirebaseUser user= FirebaseAuth.getInstance().getCurrentUser();

String uid=firebaseAuth.getCurrentUser().getUid();
DatabaseReference databaseReference =firebaseDatabase.getReference(uid);

databaseReference.removeValue();

user.delete().addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
firebaseAuth.signOut();
startActivity(new Intent(UpdateProfilActivity.this, MainActivity.class));
finish();
}

}
});
}
});
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case android.R.id.home:
onBackPressed();
}
return super.onOptionsItemSelected(item);
}

最佳答案

错误信息的核心是这样的:

看来您正在调用 getReference(null),这是不允许的。

在您分享的代码中,有两次调用 getReference():

DatabaseReference databaseReference= firebaseDatabase.getReference(firebaseAuth.getUid());

和:

String uid=firebaseAuth.getCurrentUser().getUid();
DatabaseReference databaseReference =firebaseDatabase.getReference(uid);

在其中一种情况下,您传递给 getReference(...) 的值是 null。我真的无法从您提供的信息中找出哪一个,实际上我很惊讶第一个编译,因为 FirebaseAuth class似乎没有 getUid() 方法。

关于java - 应用程序因向 FirebaseDatabase.getReference() 传递空值而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57977353/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com