Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无效的文档引用。文档引用必须有偶数个段,但问题有1个_Android_Firebase_Android Studio_Firebase Realtime Database_Google Cloud Firestore - Fatal编程技术网

Android 无效的文档引用。文档引用必须有偶数个段,但问题有1个

Android 无效的文档引用。文档引用必须有偶数个段,但问题有1个,android,firebase,android-studio,firebase-realtime-database,google-cloud-firestore,Android,Firebase,Android Studio,Firebase Realtime Database,Google Cloud Firestore,在我的应用程序中,用户可以编写他们的问题,管理员可以重播他们问题的答案。它成功地将id文档添加到数据库中,但我收到了此错误。 我正在使用firebase firestore数据库 这是我的密码 QuestionAddActivity.kt class QuestionAddActivity : AppCompatActivity() { private lateinit var mAuth: FirebaseAuth private lateinit var db: FirebaseFires

在我的应用程序中,用户可以编写他们的问题,管理员可以重播他们问题的答案。它成功地将id文档添加到数据库中,但我收到了此错误。 我正在使用firebase firestore数据库

这是我的密码 QuestionAddActivity.kt

class QuestionAddActivity : AppCompatActivity() {

private lateinit var mAuth: FirebaseAuth
private lateinit var db: FirebaseFirestore
private lateinit var storageReference: StorageReference
private lateinit var resultUri: Uri
private val admin: String = "DHIsHa2tUNMjv9DWrjdEuJIG0vP2"

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_question_add)

    mAuth = FirebaseAuth.getInstance()
    db = FirebaseFirestore.getInstance()
    storageReference = FirebaseStorage.getInstance().reference

    if (mAuth.currentUser.uid == admin){
        answer_edit_text.visibility = View.VISIBLE
    }else if(mAuth.currentUser.uid != admin){
        answer_edit_text.visibility = View.INVISIBLE
    }


    question_image.setOnClickListener {
        CropImage.activity()
            .setGuidelines(CropImageView.Guidelines.ON)
            .setMinCropResultSize(512, 512)
            .setAspectRatio(1, 1)
            .start(this);
    }

    submit_btn.setOnClickListener {
        val question: String = question_edit_text.text.toString().trim()
        val answer: String = answer_edit_text.text.toString().trim()
        addQuestion(question, answer)
    }
}

private fun addQuestion(question: String, answer: String) {
    val userId: String = mAuth.currentUser.uid
    progressBar.visibility = View.VISIBLE
    val time = System.currentTimeMillis()

    val questionData = QuestionData(question, answer, userId, time)
    db.collection("question").add(questionData).addOnCompleteListener {task ->
        if (task.isSuccessful){
            progressBar.visibility = View.INVISIBLE
            val intent = Intent(this,QuestionActivity::class.java)
            startActivity(intent)
            Log.d("question", "$task")
        }else{
            progressBar.visibility = View.VISIBLE
        }
    }
   }
class AnswerActivity : AppCompatActivity() {

private lateinit var mAuth: FirebaseAuth
private lateinit var db: FirebaseFirestore
private lateinit var dbupdate: DocumentReference
private lateinit var storageReference: StorageReference
private lateinit var q: String
private lateinit var a: String
private val question:QuestionData = QuestionData()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_answer)
    val bundle:Bundle? = intent.extras
    q = bundle!!.getString("question").toString()
    question_answer_edit_text.text = Editable.Factory.getInstance().newEditable(q)
    a = bundle!!.getString("answer").toString()
    answer_answer_edit_text.text = Editable.Factory.getInstance().newEditable(a)

    db = FirebaseFirestore.getInstance()
    var questionId: String = question.id.toString().replace("/","_")

    answer_btn.setOnClickListener {
        val questionData = QuestionData(q, a, question.userId, question.time)
        db.collection("question").document(questionId).set(questionData)
            .addOnCompleteListener{
                if (it.isSuccessful) {
                    Log.d("Answer", "${it.result}")
                }else{
                    Log.d("error", "${it.exception}")
                }
            }
    }
}
class QuestionActivity : AppCompatActivity(),OnClickListener {

private lateinit var mAuth: FirebaseAuth
private lateinit var db: FirebaseFirestore
private val questionAdapter by lazy { QuestionAdapter(this) }

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_question)

    db = FirebaseFirestore.getInstance()
    val questionList = ArrayList<QuestionData>()

    question_details_btn.setOnClickListener {
        val i = Intent(this,QuestionAddActivity::class.java)
        startActivity(i)
    }

    db.collection("question").addSnapshotListener{ querySnapshot: QuerySnapshot?, firebaseFirestoreException: FirebaseFirestoreException? ->

        if (querySnapshot != null) {
            for (doc:DocumentChange in querySnapshot.documentChanges){
                val questionData:QuestionData = doc.document.toObject(QuestionData::class.java)
                questionData.id = doc.document.id
                questionList.add(questionData)
                questionAdapter.setData(questionList)
            }

        }
    }
    setUpQuestion()

}

private fun setUpQuestion() {
    question_recyclerview.layoutManager = LinearLayoutManager(this,
        LinearLayoutManager.VERTICAL,false)
    question_recyclerview.setHasFixedSize(true)
    question_recyclerview.adapter = questionAdapter
}

override fun onClick(item: QuestionData, position: Int) {
    val intent = Intent(this,AnswerActivity::class.java)
    intent.putExtra("question",item.question)
    intent.putExtra("answer",item.answer)
    startActivity(intent)
    Toast.makeText(this,"$position",Toast.LENGTH_SHORT).show()
    Log.d("clicked","$position")
}
 }
AnswerActivity.kt

class QuestionAddActivity : AppCompatActivity() {

private lateinit var mAuth: FirebaseAuth
private lateinit var db: FirebaseFirestore
private lateinit var storageReference: StorageReference
private lateinit var resultUri: Uri
private val admin: String = "DHIsHa2tUNMjv9DWrjdEuJIG0vP2"

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_question_add)

    mAuth = FirebaseAuth.getInstance()
    db = FirebaseFirestore.getInstance()
    storageReference = FirebaseStorage.getInstance().reference

    if (mAuth.currentUser.uid == admin){
        answer_edit_text.visibility = View.VISIBLE
    }else if(mAuth.currentUser.uid != admin){
        answer_edit_text.visibility = View.INVISIBLE
    }


    question_image.setOnClickListener {
        CropImage.activity()
            .setGuidelines(CropImageView.Guidelines.ON)
            .setMinCropResultSize(512, 512)
            .setAspectRatio(1, 1)
            .start(this);
    }

    submit_btn.setOnClickListener {
        val question: String = question_edit_text.text.toString().trim()
        val answer: String = answer_edit_text.text.toString().trim()
        addQuestion(question, answer)
    }
}

private fun addQuestion(question: String, answer: String) {
    val userId: String = mAuth.currentUser.uid
    progressBar.visibility = View.VISIBLE
    val time = System.currentTimeMillis()

    val questionData = QuestionData(question, answer, userId, time)
    db.collection("question").add(questionData).addOnCompleteListener {task ->
        if (task.isSuccessful){
            progressBar.visibility = View.INVISIBLE
            val intent = Intent(this,QuestionActivity::class.java)
            startActivity(intent)
            Log.d("question", "$task")
        }else{
            progressBar.visibility = View.VISIBLE
        }
    }
   }
class AnswerActivity : AppCompatActivity() {

private lateinit var mAuth: FirebaseAuth
private lateinit var db: FirebaseFirestore
private lateinit var dbupdate: DocumentReference
private lateinit var storageReference: StorageReference
private lateinit var q: String
private lateinit var a: String
private val question:QuestionData = QuestionData()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_answer)
    val bundle:Bundle? = intent.extras
    q = bundle!!.getString("question").toString()
    question_answer_edit_text.text = Editable.Factory.getInstance().newEditable(q)
    a = bundle!!.getString("answer").toString()
    answer_answer_edit_text.text = Editable.Factory.getInstance().newEditable(a)

    db = FirebaseFirestore.getInstance()
    var questionId: String = question.id.toString().replace("/","_")

    answer_btn.setOnClickListener {
        val questionData = QuestionData(q, a, question.userId, question.time)
        db.collection("question").document(questionId).set(questionData)
            .addOnCompleteListener{
                if (it.isSuccessful) {
                    Log.d("Answer", "${it.result}")
                }else{
                    Log.d("error", "${it.exception}")
                }
            }
    }
}
class QuestionActivity : AppCompatActivity(),OnClickListener {

private lateinit var mAuth: FirebaseAuth
private lateinit var db: FirebaseFirestore
private val questionAdapter by lazy { QuestionAdapter(this) }

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_question)

    db = FirebaseFirestore.getInstance()
    val questionList = ArrayList<QuestionData>()

    question_details_btn.setOnClickListener {
        val i = Intent(this,QuestionAddActivity::class.java)
        startActivity(i)
    }

    db.collection("question").addSnapshotListener{ querySnapshot: QuerySnapshot?, firebaseFirestoreException: FirebaseFirestoreException? ->

        if (querySnapshot != null) {
            for (doc:DocumentChange in querySnapshot.documentChanges){
                val questionData:QuestionData = doc.document.toObject(QuestionData::class.java)
                questionData.id = doc.document.id
                questionList.add(questionData)
                questionAdapter.setData(questionList)
            }

        }
    }
    setUpQuestion()

}

private fun setUpQuestion() {
    question_recyclerview.layoutManager = LinearLayoutManager(this,
        LinearLayoutManager.VERTICAL,false)
    question_recyclerview.setHasFixedSize(true)
    question_recyclerview.adapter = questionAdapter
}

override fun onClick(item: QuestionData, position: Int) {
    val intent = Intent(this,AnswerActivity::class.java)
    intent.putExtra("question",item.question)
    intent.putExtra("answer",item.answer)
    startActivity(intent)
    Toast.makeText(this,"$position",Toast.LENGTH_SHORT).show()
    Log.d("clicked","$position")
}
 }
问题活动.kt

class QuestionAddActivity : AppCompatActivity() {

private lateinit var mAuth: FirebaseAuth
private lateinit var db: FirebaseFirestore
private lateinit var storageReference: StorageReference
private lateinit var resultUri: Uri
private val admin: String = "DHIsHa2tUNMjv9DWrjdEuJIG0vP2"

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_question_add)

    mAuth = FirebaseAuth.getInstance()
    db = FirebaseFirestore.getInstance()
    storageReference = FirebaseStorage.getInstance().reference

    if (mAuth.currentUser.uid == admin){
        answer_edit_text.visibility = View.VISIBLE
    }else if(mAuth.currentUser.uid != admin){
        answer_edit_text.visibility = View.INVISIBLE
    }


    question_image.setOnClickListener {
        CropImage.activity()
            .setGuidelines(CropImageView.Guidelines.ON)
            .setMinCropResultSize(512, 512)
            .setAspectRatio(1, 1)
            .start(this);
    }

    submit_btn.setOnClickListener {
        val question: String = question_edit_text.text.toString().trim()
        val answer: String = answer_edit_text.text.toString().trim()
        addQuestion(question, answer)
    }
}

private fun addQuestion(question: String, answer: String) {
    val userId: String = mAuth.currentUser.uid
    progressBar.visibility = View.VISIBLE
    val time = System.currentTimeMillis()

    val questionData = QuestionData(question, answer, userId, time)
    db.collection("question").add(questionData).addOnCompleteListener {task ->
        if (task.isSuccessful){
            progressBar.visibility = View.INVISIBLE
            val intent = Intent(this,QuestionActivity::class.java)
            startActivity(intent)
            Log.d("question", "$task")
        }else{
            progressBar.visibility = View.VISIBLE
        }
    }
   }
class AnswerActivity : AppCompatActivity() {

private lateinit var mAuth: FirebaseAuth
private lateinit var db: FirebaseFirestore
private lateinit var dbupdate: DocumentReference
private lateinit var storageReference: StorageReference
private lateinit var q: String
private lateinit var a: String
private val question:QuestionData = QuestionData()

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_answer)
    val bundle:Bundle? = intent.extras
    q = bundle!!.getString("question").toString()
    question_answer_edit_text.text = Editable.Factory.getInstance().newEditable(q)
    a = bundle!!.getString("answer").toString()
    answer_answer_edit_text.text = Editable.Factory.getInstance().newEditable(a)

    db = FirebaseFirestore.getInstance()
    var questionId: String = question.id.toString().replace("/","_")

    answer_btn.setOnClickListener {
        val questionData = QuestionData(q, a, question.userId, question.time)
        db.collection("question").document(questionId).set(questionData)
            .addOnCompleteListener{
                if (it.isSuccessful) {
                    Log.d("Answer", "${it.result}")
                }else{
                    Log.d("error", "${it.exception}")
                }
            }
    }
}
class QuestionActivity : AppCompatActivity(),OnClickListener {

private lateinit var mAuth: FirebaseAuth
private lateinit var db: FirebaseFirestore
private val questionAdapter by lazy { QuestionAdapter(this) }

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_question)

    db = FirebaseFirestore.getInstance()
    val questionList = ArrayList<QuestionData>()

    question_details_btn.setOnClickListener {
        val i = Intent(this,QuestionAddActivity::class.java)
        startActivity(i)
    }

    db.collection("question").addSnapshotListener{ querySnapshot: QuerySnapshot?, firebaseFirestoreException: FirebaseFirestoreException? ->

        if (querySnapshot != null) {
            for (doc:DocumentChange in querySnapshot.documentChanges){
                val questionData:QuestionData = doc.document.toObject(QuestionData::class.java)
                questionData.id = doc.document.id
                questionList.add(questionData)
                questionAdapter.setData(questionList)
            }

        }
    }
    setUpQuestion()

}

private fun setUpQuestion() {
    question_recyclerview.layoutManager = LinearLayoutManager(this,
        LinearLayoutManager.VERTICAL,false)
    question_recyclerview.setHasFixedSize(true)
    question_recyclerview.adapter = questionAdapter
}

override fun onClick(item: QuestionData, position: Int) {
    val intent = Intent(this,AnswerActivity::class.java)
    intent.putExtra("question",item.question)
    intent.putExtra("answer",item.answer)
    startActivity(intent)
    Toast.makeText(this,"$position",Toast.LENGTH_SHORT).show()
    Log.d("clicked","$position")
}
 }
我的数据库是 [1] :

这是我的错误日志 [2] :


如何解决此错误?谢谢你

db.collection(“question”).document(questionId).set(questionData)中“questionId”的值是多少?添加日志以及在哪个文件/行中有错误的代码我从questionId继承questionId:questionData=questionData()对象@AlexMamo@Kamal纳扬,请看我的问题,我添加了logcat错误。希望您能理解,我不是问您从哪个类继承,而是问db.collection(“question”).document(questionId).set(questionData)中的“questionId”值。