>

아래 그림과 같이 Firebase Cloud Firestore 데이터 구조가 있고 "A1"에 액세스하려고합니다.

실제 답변과 후속 투표 수를 포함하는 각 "답변"문서에 액세스하려고합니다. 그런 다음이 답변 정보를 사용하여 라디오 버튼을 채 웁니다.

현재 x9ojsg4tzLgx2SRTnchp에 DocumentSnapshot 참조가 있습니다. 그 참고 문헌에서 아래에 표시된 것처럼 답변 모음을 가져옵니다.

public void addRadioButtonsWithFirebaseAnswers(int numberOfAnswers, DocumentSnapshot documentSnapshot) {
    mPollAnswerArrayList = new ArrayList<RadioButton>();
    for (int i = (numberOfAnswers - 1); i >= 0; i--) {
        Log.e("Number of Answers", "The number of answers is " + numberOfAnswers);
        final int indexCreated = ((numberOfAnswers - 1) - i);
        mPollAnswerArrayList.add((indexCreated), new RadioButton((getActivity().getApplicationContext())));
        mPollAnswerArrayList.get(indexCreated).setId(indexCreated);
        String firebaseChild = String.valueOf(indexCreated + 1);
        documentSnapshot.getReference().collection(ANSWERS_LABEL).document(firebaseChild).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
            @Override
            public void onSuccess(DocumentSnapshot documentSnapshot) {
                Answer answer = documentSnapshot.toObject(Answer.class);
                mPollAnswerArrayList.get(indexCreated).setText(answer.getAnswer());
                Log.v("TAG FOR DOCREF", answer.getAnswer());
            }
        });

그리고 여기 내 답변 모델이 있습니다 :

   @IgnoreExtraProperties
    public class Answer {
      private String answer;
      private int vote_count;
      public Answer(String answer, int vote_count){
          this.answer = answer;
          this.vote_count = vote_count;
      }
      public String getAnswer() {
          return answer;
      }
      public int getVote_count() {
          return vote_count;
      }
  }

널 포인터를 받고 있습니다 :

와이즈 비즈

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.lang.reflect.Constructor.newInstance(java.lang.Object[])' on a null object reference at com.google.android.gms.internal.zzevb$zza.zza(Unknown Source) at com.google.android.gms.internal.zzevb.zza(Unknown Source) at com.google.android.gms.internal.zzevb.zza(Unknown Source) at com.google.firebase.firestore.DocumentSnapshot.toObject(Unknown Source) at com.troychuinard.fanpolls.Fragment.PollFragment$6.onSuccess(PollFragment.java:534) at com.troychuinard.fanpolls.Fragment.PollFragment$6.onSuccess(PollFragment.java:531) at com.google.android.gms.tasks.zzj.run(Unknown Source) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5527) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)


  • 답변 # 1

    응답에 공개 인수없는 생성자를 추가하십시오. 모든 자바 빈즈 객체는 하나의 객체를 가져야 만 리플렉션을 사용하여 파라미터를 올바르게 전달하는 방법을 추측 할 필요없이 인스턴스를 생성 할 수 있습니다.

    public Answer() {}
    
    

관련 자료

  • 이전 java - 처리시 보드 게임 조각 움직임을 수정하는 방법
  • 다음 임의의 값을 생성하는 코드에 Gradle systax 오류가 발생했습니다