【发布时间】:2020-03-18 01:57:14
【问题描述】:
我设计了一个从 firebase 服务器检索用户数据的应用。但是 java 代码无法从实时数据库中检索用户的详细信息。
引发的错误是以下行收到NullPointer。
User userDashboard = dataSnapshot.getValue(User.class);
USERNAME.setText(userDashboard.getName().toString().trim());
PASSWORD.setText(userDashboard.getPassword().toString().trim());
EMAIL.setText(userDashboard.getEmail().toString().trim());
下面是java代码。
package com.example.loginuiapp;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
public class UserDashboard extends AppCompatActivity {
Button btnLogout;
private TextView USERNAME, PASSWORD, EMAIL;
private FirebaseAuth firebaseAuth;
private FirebaseDatabase firebaseDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// MAKING THE APP FULLSCREEN. KINDLY DO NOT DELETE THE BELOW LINES WITHOUT PRIOR KNOWLEDGE
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_user_dashboard);
USERNAME = findViewById(R.id.display_username);
PASSWORD = findViewById(R.id.display_usr_password);
EMAIL = findViewById(R.id.display_usr_email);
firebaseAuth = FirebaseAuth.getInstance();
firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = firebaseDatabase
.getReference(firebaseAuth.getUid());
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {/*
User userDashboard = dataSnapshot.getValue(User.class);
USERNAME.setText(userDashboard.getName().toString().trim());
PASSWORD.setText(userDashboard.getPassword().toString().trim());
EMAIL.setText(userDashboard.getEmail().toString().trim());*/
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Toast.makeText(UserDashboard.this, "Database Error", Toast.LENGTH_LONG).show();
}
});
// Handling the Logout action when the logout button is clicked.
btnLogout = findViewById(R.id.logout_button);
btnLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseAuth.getInstance().signOut();
// Read this thread to know what's happening
// https://stackoverflow.com/questions/53334017/back-button-will-bring-to-home-page-after-firebase-logout-on-app
Intent intent = new Intent(UserDashboard.this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
Toast.makeText(UserDashboard.this, "Successfully Logged Out!", Toast.LENGTH_LONG).show();
}
});
}
}
感谢您的帮助!
【问题讨论】:
-
您能否更新您的问题以显示您为用户存储的 JSON(作为文本,请不要截图)?您可以通过单击 Firebase Database console 的溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
标签: android database firebase firebase-realtime-database