- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
希望你能帮我解决我的错误。我仍在开发我的登录应用程序,直到现在该应用程序运行良好,尽管存在一些小错误。到目前为止,用户可以登录、登录和更改他的个人资料信息。在最后的步骤中,我还实现了删除用户信息的功能。同时,删除功能也起作用,以便从 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/
我有一段代码看起来像这样: void update_clock(uint8_t *time_array) { time_t time = *((time_t *) &time_array[0]
应用程序崩溃了 :( 请帮助我.. 在这方面失败了。我找不到错误?该应用程序可以连接到 iTunesConnect 但它会出错。 谁能根据下面的崩溃报告判断问题出在哪里? share_with_app
小二是新来的实习生,作为技术 leader,我给他安排了一个非常简单的练手任务,把前端 markdown 编辑器里上传的图片保存到服务器端,结果他真的就把图片直接保存到了服务器上,这下可把我气坏了,就
我正在创建一个函数,它将目录路径作为参数传递,或者如果它留空,则提示用户输入。 我已经设置了我的 PATH_MAX=100 和 if 语句来检查 if ((strlen(folder path) +
我已将“arial.ttf”文件(从我的/Windows/Fonts 文件夹中获取)加载到内存中,但是将其传递到 FT_New_Memory_Face 时会崩溃(在 FT_Open_Face 中的某处
我正在尝试在我的计算机上的两个控制台之间进行 rtsp 流。 在控制台 1 上,我有: ffmpeg -rtbufsize 100M -re -f dshow -s 320x240 -i video=
我正在尝试使用 scio_beast在一个项目中。我知道它还没有完成,但这并不重要。我已经设法让它工作得很好。 我现在正在尝试连接到 CloudFlare 后面的服务器,我知道我需要 SNI 才能工作
我有一个带有关联宏的下拉列表,如下所示: Sub Drop() If Range("Hidden1!A1") = "1" Then Sheets("Sheet1").Se
我对 bash 很陌生。我要做的就是运行这个nvvp -vm /usr/lib64/jvm/jre-1.8.0/bin/java无需记住最后的路径。我认为 instafix 就是这样做...... n
我在 Windows 上使用 XAMPP 已经两年左右了,它运行完美,没有崩溃没有问题。 (直到四个月前。) 大约四个月前,我们将服务器/系统升级到了更快的规范。 这是旧规范的内容 - Windows
我面临着一个非常烦人的 android 崩溃,它发生在大约 1% 的 PRODUCTION session 中,应用程序始终在后台运行。 Fatal Exception: android.app.Re
尝试使用下面的函数: public void createObjectType() { try { mCloudDB.createObjectType(ObjectTypeIn
由于我正在进行的一个项目,我在 CF11 管理员中弄乱了类路径,我设法使服务器崩溃,以至于我唯一得到的是一个漂亮的蓝屏和 500 错误.我已经检查了日志,我会把我能做的贴在帖子的底部,但我希望有人会启
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 10 个月前关闭。 Improve
我最近从 xcode 3.x 更新到 4.2,当我在 4.2 中运行应用程序时,我遇到了核心数据问题。我还更新到了 iOS 5,所以问题可能就在那里,我不太确定。 这些应用程序在 3.x 中运行良好,
我是一个相对较新的 iPhone 应用程序开发人员,所以我的知识有点粗略,所以如果这是一个微不足道的问题,请原谅我。 我有一个导航应用程序,它通过在navigationController对象上调用p
if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *mailViewController
你能帮我吗? 我正在设置 UILocalNotification,当我尝试设置其 userInfo 字典时,它崩溃了。 fetchedObjects 包含 88 个对象。 这是代码: NSDi
为什么我的代码中突然出现 NSFastEnumeration Mutation Handler 崩溃。我很茫然为什么会突然出现这个崩溃以及如何解决它。 最佳答案 崩溃错误: **** 由于未捕获的异常
当我从表中删除行时,我的应用程序崩溃了。这是我检测到错误和堆栈跟踪的来源。谢谢! //delete row from database - (void)tableView:(UITableView *
我是一名优秀的程序员,十分优秀!