Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

665
Visualizações
Error "¿Requerido:Cadena encontrada:Cadena?" Kotlin y Android Studio

Como sugiere el título, aparece un subrayado rojo debajo de "id" en la línea "var myNote = Note(id, title, note, ServerValue.TIMESTAMP)" Error "¿Requerido:Cadena encontrada:Cadena?" Kotlin y Android Studio

 class MainActivity : AppCompatActivity() { var mRef:DatabaseReference? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val database = FirebaseDatabase.getInstance() mRef = database.getReference("Notes") add_new_note.setOnClickListener { showDialogAddNote() } } fun showDialogAddNote() { val alertBuilder = AlertDialog.Builder(this) val view = layoutInflater.inflate(R.layout.add_note, null) alertBuilder.setView(view) val alertDialog = alertBuilder.create() alertDialog.show() view.btnSaveNote.setOnClickListener { val title = view.etTitle.text.toString() val note = view.etNote.text.toString() if (title.isNotEmpty() && note.isNotEmpty()) { var id = mRef!!.push().key var myNote = Note(id, title, note, ServerValue.TIMESTAMP) mRef!!.child(id).setValue(myNote) alertDialog.dismiss() } else { Toast.makeText(this, "Empty", Toast.LENGTH_LONG).show() } } } }

Aquí está mi clase Notes.kt

 package com.example.gearoidodonovan.books import java.util.* class Note (var id:String, var title:String, var note:String, var timestamp: MutableMap<String, String>) { }
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Kotlin te obliga a ser hiperconsciente sobre la nulabilidad.

Su entidad Note dice que requiere una id:String no anulable, y aparentemente, mRef!!.push().key devuelve una String? lo que significa que es una cadena anulable. Puede arreglar esto golpeándolo dos veces, es decir, mReff!!.push().key!!

Otro consejo es ALT+ENTER en estos errores relacionados con Kotlin, te proporcionará el doble golpe.

over 4 years ago · Santiago Trujillo Relatório

0

Su propiedad de id en Note se declara como String no nula, mientras que la clave que tiene es una String? . Necesitas cerrar esta brecha.

  1. ¡La forma más simple pero más peligrosa es usar !! , que producirá una excepción si la key era nula, es decir

     var id = mRef!!.push().key!!
  2. Una mejor manera es manejar el caso nulo de alguna manera, por ejemplo, realizando una verificación nula:

     var id = mRef!!.push().key if (id != null) { var myNote = Note(id, title, note, ServerValue.TIMESTAMP) mRef!!.child(id).setValue(myNote) alertDialog.dismiss() } else { // handle the case where key is null somehow }
  3. También puede hacer que la propiedad en su propia clase sea anulable y tratar con el valor de ID que podría ser nulo más adelante:

     class Note (var id: String?, var title: String, var note: String, var timestamp: MutableMap<String, String>)

Tenga en cuenta que todos los mRef!! Las llamadas también son problemáticas. Por un lado, la notación húngara (el prefijo m ) generalmente se desaconseja en Kotlin, y el !! el operador también es peligroso. ¡Será mejor que maneje el caso nulo temprano para esa referencia, y luego podría usarlo de manera más conveniente, sin tener que ensuciar su código con !! .

También lo animo a leer sobre seguridad nula en general la documentación oficial o en esta respuesta .

over 4 years ago · Santiago Trujillo Relatório

0

Puedes usar:

@Suppress("NULLABILITY_MISMATCH_BASED_ON_JAVA_ANNOTATIONS")

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda