나는 애플 리케이션을 가지고있는 사람을 모두 업데이트 할 Task app를 만들려고 노력하고있다. 나는 각 버튼이 다른 작업이라는 버튼을 갖고 싶다. 지금은 2이다. 누군가가 작업을 누를 때마다 나는 원하는 것이다. 작업에는 클릭 한 특정 사용자에게주는 "포인트"가 있으며, 버튼은 모두에게 완료로 업데이트되며 버튼의 이름은 ButtonName + UserClicked + TimeClicked로 변경됩니다. 내가 여기서 문제가 JSON 파일에서 포인트 값을 얻는을 갖는 점과 사용자를 업데이트하고 것은 내 JSON 파일입니다 : 여기 Android-Firebase-getValue?
{
"Tasks":{
"Room1":{
"DoTime":"",
"ID":2,
"MadeBy":"",
"Points":150,
"isActive":1
},
"Room2":{
"DoTime":"",
"ID":1,
"MadeBy":"",
"Points":100,
"isActive":1
}
},
"Users":{
"L18uheV3GVbmJ8GmVvoCOmU3e1E2":{
"Email":"[email protected]",
"Points":0,
"UserName":"Name1",
"isAdmin":0
},
"tcAOO7dmXEgADBqRwTTlUfWIH803":{
"Email":"[email protected]",
"Points":0,
"UserName":"Name2",
"isAdmin":0
}
},
"update":2
}
내 코드입니다 :
String displayName = " ";
Object TaskingPoints = 0;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference RefUser = database.getReference("Users").child(FirebaseAuth.getInstance().getCurrentUser().getUid());
DatabaseReference RefTask = database.getReference("Tasks");
public void button_function(View Button){
final String ButtonTaskName = Button.getResources().getResourceEntryName(Button.getId());
final Button b = (Button) Button;
DatabaseReference givePoints = database.getReference(ButtonTaskName).child("Points");
DatabaseReference ClickUser = (DatabaseReference) RefUser.child("UserName");
final CharSequence ClickTime = DateFormat.format("dd-MM-yyy (HH:mm)" , new Date().getTime());
RefUser.child("UserName").addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
displayName = dataSnapshot.getValue().toString();
b.setText(b.getText() + " (" + displayName + ") " + ClickTime);
RefTask.child(ButtonTaskName).child("DoTime").setValue(ClickTime);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
RefTask.child(ButtonTaskName).child("Points").addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
TaskingPoints = dataSnapshot.getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
RefTask.child(ButtonTaskName).child("isActive").setValue(0);
RefUser.child("Points").setValue(TaskingPoints);
RefTask.child(ButtonTaskName).child("MadeBy").setValue(displayName);
b.getBackground();
b.setEnabled(false);
b.setBackgroundResource(R.color.myGreen);
}
를 많이가 작동, 하지만 문제는 다음과 같습니다. 앱을 실행할 때마다 내가 클릭 한 첫 번째 버튼을 클릭 할 때 사용자의 포인트가 업데이트되지 않고 작업의 MadeBy 키가 업데이트되지 않지만 다른 버튼을 클릭하면 모든 것이 업데이트되지만 첫 번째 버튼을 클릭하십시오. 제게 잘못하고있는 것을 가르쳐주세요. P.S : 단추는이 기능을 호출합니다.