Reputation: 201
I am trying to pass on the text selection of the user as a string to convert it to the document path of my Firestore collection.
Unfortunately, I get the error message:
Variable 'enteredText' must be initialized in line
val docRef = db.collection("storage").document(enteredText)
and the "(enteredText)" is underlined in red.
Does anyone know how to fix it?
package com.example.servus
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import com.google.firebase.firestore.ktx.firestore
import com.google.firebase.ktx.Firebase
import android.view.View
import android.widget.ArrayAdapter
import android.widget.AutoCompleteTextView
import android.widget.Button
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val autotextView
= findViewById<AutoCompleteTextView>(R.id.autoTextViewStart)
val autotextViewZiel
= findViewById<AutoCompleteTextView>(R.id.autoTextViewZiel)
// Get the array of languages
val languages
= resources.getStringArray(R.array.Languages)
// Create adapter and add in AutoCompleteTextView
val adapter
= ArrayAdapter(this,
android.R.layout.simple_list_item_1, languages)
autotextView.setAdapter(adapter)
autotextViewZiel.setAdapter(adapter)
var enteredText: String
val button
= findViewById<Button>(R.id.btn); if (button != null)
{
button.setOnClickListener(View.OnClickListener {
enteredText =
autotextView.getText().toString()
Toast.makeText(this@MainActivity, enteredText, Toast.LENGTH_SHORT).show()
})
}
// getString(R.string.submitted_lang)
val db = Firebase.firestore
val value1= findViewById(R.id.value1) as TextView
val value2= findViewById(R.id.value2) as TextView
val value3= findViewById(R.id.value3) as TextView
val docRef = db.collection("storage").document(enteredText)
docRef.get()
.addOnSuccessListener { document ->
if (document !=null) {
Log.d("exist", "DocumentSnapshot data: ${document.data}")
value1.text = document.getString("value1")
value2.text = document.getString("value2")
value3.text = document.getString("value3")
} else {
Log.d("noexist", "No such docoument")
}
}
.addOnFailureListener { exception ->
Log.w("notexisting", "Error getting documents.", exception)
}
}
}
Upvotes: 0
Views: 591
Reputation: 138824
You have the "enteredText" variable underlined in red because you didn't initialize it. You can either declare it as a member of the class:
private lateinit var enteredText: String
Using the lateinit
keyword, meaning that you'll have to provide a value later in your code, or you can assign a value once you declare it:
var enteredText: String = ""
Edit:
val button
= findViewById<Button>(R.id.btn); if (button != null)
{
button.setOnClickListener(View.OnClickListener {
enteredText =
autotextView.getText().toString()
Toast.makeText(this@MainActivity, enteredText, Toast.LENGTH_SHORT).show()
val db = Firebase.firestore
val value1= findViewById(R.id.value1) as TextView
val value2= findViewById(R.id.value2) as TextView
val value3= findViewById(R.id.value3) as TextView
val docRef = db.collection("storage").document(enteredText)
docRef.get()
.addOnSuccessListener { document ->
if (document !=null) {
Log.d("exist", "DocumentSnapshot data: ${document.data}")
value1.text = document.getString("value1")
value2.text = document.getString("value2")
value3.text = document.getString("value3")
} else {
Log.d("noexist", "No such document")
}
}
.addOnFailureListener { exception ->
Log.w("notexisting", "Error getting documents.", exception)
}
})
Upvotes: 1