Java Android:将值从snapshop检索到textview时出现Null异常错误
我正在创建一个反馈应用程序,用户从1-5对服务进行评分,我在下一页显示所有用户评分的平均值(截止日期)。平均评分是出来是好的,但我无法从快照中获取的应用程序上的评分到现在为止的用户总数 这是密码-Java Android:将值从snapshop检索到textview时出现Null异常错误,java,android,firebase,Java,Android,Firebase,我正在创建一个反馈应用程序,用户从1-5对服务进行评分,我在下一页显示所有用户评分的平均值(截止日期)。平均评分是出来是好的,但我无法从快照中获取的应用程序上的评分到现在为止的用户总数 这是密码- public class Score extends AppCompatActivity { TextView avgScore; TextView totalUsers; double userCount; DatabaseReference dbRef;
public class Score extends AppCompatActivity {
TextView avgScore;
TextView totalUsers;
double userCount;
DatabaseReference dbRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); //will hide the title
getSupportActionBar().hide(); // hide the title bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN); //enable full screen
setContentView(R.layout.score);
avgScore = findViewById(R.id.textView2);
dbRef = FirebaseDatabase.getInstance().getReference().child("Users");
scoreRealTime();
}
public void scoreRealTime() {
dbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
double total = 0;
for (DataSnapshot ds : snapshot.getChildren()){
UserHelper helper = ds.getValue(UserHelper.class);
double values = Double.parseDouble(String.valueOf(helper.rating));
// double values = Double.parseDouble(ds.child("rating").getValue().toString());
total = total + values;
userCount = snapshot.getChildrenCount();
}
double average = (double) total / snapshot.getChildrenCount();
avgScore.setText(String.format("%.2f", average));
//System.out.println(userCount);
totalUsers.setText((int) userCount); //error occurs here
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}
这是错误日志-
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.feedback, PID: 26338
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(int)' on a null object reference
at com.example.feedback.Score$1.onDataChange(Score.java:60)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
编辑:另外,如果您能解释为什么这里会发生NullPointerException或者通常会发生NullPointerException,那就太好了。谢谢。您没有链接totalUsers。你需要做什么
totalUsers = findViewById(R.id.textView);
同样从代码中,它会导致您没有初始化您的
totalUsers
TextView。之所以出现NullPointerException
,是因为您全局声明了totalUsers
,默认情况下将其初始化为null