我想在Firebase中更改数据时更改文本视图中的文本。但是,我想要的结果只是TextView中的更改,但最终导致再次调用onCreate方法。那么,如何防止在数据更改时调用该方法呢?
我尝试在新线程和处理程序中运行它,但结果仍然相同。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
Log.e("onCreate","oncreate");
DatabaseReference statusRDB = FirebaseDatabase.getInstance().getReference().child("User").child(friendID).child("CurrentStatus");
statusRDB.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String status = dataSnapshot.child("Status").getValue().toString();
String lastActive = dataSnapshot.child("LastActive").getValue().toString();
mStatusText.setText(showActive.showActiveTime(status,lastActive));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
预期的结果是,仅文本视图中的文本将被更改,而不是整个onCreate被调用并开始新的活动。
上面的sudo代码中不会再调用oncreate方法。在上面的代码中,您正在使用addListenerForSingleValueEvent
,它将仅被调用一次。