Query ref = mDatabaseReference.child("Messages")
.child(MessageRecieverId).child(MessageSenderId).orderByChild("Seen").equalTo(false);
ref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long count = 0;
for(DataSnapshot ds : dataSnapshot.getChildren()) {
count = dataSnapshot.getChildrenCount();
MainData helper = new MainData(getApplicationContext()); //Change the name to your Helper Class name
SQLiteDatabase db = helper.getWritableDatabase();
String newId = "MyData";
Cursor data = helper.getData();
long newDatar = 0;
long newDatat = 0;
while(data.moveToNext()){
newId = data.getString(data.getColumnIndex("Data"));
newDatar = data.getInt(data.getColumnIndex("TotalMessagesRecieved"));
newDatat = data.getInt(data.getColumnIndex("TotalMessages"));
}
ContentValues contentValues = new ContentValues();
contentValues.put(KEY_DATA, newId);
contentValues.put(KEY_TOTAL_MESSAGES_RECIEVED, (newDatar+count));
contentValues.put(KEY_TOTAL_MESSAGES, (newDatat+count));//Change the value of newData(which is actually your old value) by incrementing
long returnVariable = db.update(TABLE_MAIN_DATA, contentValues, null, null);
if(returnVariable == -1){
Toast.makeText(getApplication(),"Nope", Toast.LENGTH_LONG).show();
//-1 means there was an error updating the values
}
else{
Toast.makeText(getApplication(),"r", Toast.LENGTH_SHORT).show();
}
}
Log.d("CMONNN", String.valueOf(count)); //Will print the number of seen messages
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("CMONNN", databaseError.getMessage()); //Don't ignore errors!
}
});
此问题是我第一次打开活动,如果在sqlite中有一个孩子要添加到表中,则正常添加不会有任何问题,然后我关闭活动并再次打开它并添加孩子只有两次,即使我只有一次,如果我关闭并再次打开它,它也会增加三次而不是一次,然后就这样继续下去。。。为什么这如此行为,我如何才能将其更改为第一次执行一次?打开活动...而且我不能使用valueforsingleevent,因为我需要每秒在活动中即时通讯……而关闭活动时,removelistener也不起作用...所以有人请帮我
答案 0 :(得分:1)
活动结束后,很可能从未删除监听器。您使用ref.addValueEventListener()
添加了一个侦听器,但从未使用ref.removeEventListener()
删除了它。如果您从不删除侦听器,它将继续触发新的更改。在Android上,通常使这些调用对称,因此,如果在onStart期间添加侦听器,则应在onStop期间将其删除。