2

,這一問題被創建爲我剛纔的問題中包含的,而不是縮小它下降到1的Android - 火力地堡 - 保存新的數據,而不會覆蓋舊的數據

目的

用戶將能夠以2的問題存儲新的數據,而不會覆蓋其之前提交的資料

說明

當前,當用戶輸入新報告時,事件報告節點內的用戶事件報告數據將被覆蓋。

用戶發送的舊事件報告中的數據應與新數據一起保存。

通過這種方式,當局將能夠查看以前的報告以及新的報告數據。

問題

每當一個當前登錄的用戶節省了「報告」中,報告的數據將覆蓋報告數據

代碼保存數據

private void submitReport(final String userReportDate,final String userReportTime, 
           final String userReportLocation,final String userReportDescription) { 

     jReportCurrentUserID = FirebaseAuth.getInstance().getCurrentUser(); 
     final String reportUserID = jReportCurrentUserID.getUid(); 
     jReportByUserDatabase = FirebaseDatabase.getInstance().getReference().child("Incident Reports").child(reportUserID); 

     HashMap<String, String> incidentReportUser = new HashMap<>(); 
     incidentReportUser.put("date", userReportDate); 
     incidentReportUser.put("time", userReportTime); 
     incidentReportUser.put("location", userReportLocation); 
     incidentReportUser.put("description", userReportDescription); 

     jReportByUserDatabase.setValue(incidentReportUser).addOnCompleteListener(new OnCompleteListener<Void>() { 
      @Override 
      public void onComplete(@NonNull Task<Void> task) { 
       if(task.isSuccessful()){ 
        jReportLoad.dismiss(); 
        Toast.makeText(getActivity(), "Report was Sent", Toast.LENGTH_SHORT).show(); 
        jReportDatePick.setText(""); 
        jReportTimeEnt.setText(""); 
        jReportLocationEnt.setText(""); 
        jReportDescriptionEnt.setText(""); 
       }else{ 
        jReportLoad.dismiss(); 
        Toast.makeText(getActivity(), "Report failed to be sent", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
    } 

回答

2

jReportByUserDatabase.push().setValue(incidentReportUser)

這樣寫(push()增加了值而不是覆蓋)。

+0

謝謝您的回答少年存儲向下一個級別! = D – Student

0

push documentation

請注意,您的所有報告將依據()由.push創造了一個獨特的密鑰

private void submitReport(final String userReportDate,final String userReportTime, 
           final String userReportLocation,final String userReportDescription) { 

     jReportCurrentUserID = FirebaseAuth.getInstance().getCurrentUser(); 

     final String reportUserID = jReportCurrentUserID.getUid(); 
     jReportByUserDatabase = FirebaseDatabase.getInstance().getReference().child("Incident Reports").child(reportUserID).push(); 
     DatabaseReference newReport = jReportByUserDatabase.push(); 

     HashMap<String, String> incidentReportUser = new HashMap<>(); 
     incidentReportUser.put("date", userReportDate); 
     incidentReportUser.put("time", userReportTime); 
     incidentReportUser.put("location", userReportLocation); 
     incidentReportUser.put("description", userReportDescription); 

     newReport.setValue(incidentReportUser).addOnCompleteListener(new OnCompleteListener<Void>() { 
      @Override 
      public void onComplete(@NonNull Task<Void> task) { 
       if(task.isSuccessful()){ 
        jReportLoad.dismiss(); 
        Toast.makeText(getActivity(), "Report was Sent", Toast.LENGTH_SHORT).show(); 
        jReportDatePick.setText(""); 
        jReportTimeEnt.setText(""); 
        jReportLocationEnt.setText(""); 
        jReportDescriptionEnt.setText(""); 
       }else{ 
        jReportLoad.dismiss(); 
        Toast.makeText(getActivity(), "Report failed to be sent", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
    } 
+0

謝謝你的回答彼得! = D我已經投了票,但我只能接受一個答案,所以我去了第一個答案。抱歉 – Student