1
resposta

setText() com TextInputLayout

No minha activity_formulario_produto estou usando TextInputLayout

   <com.google.android.material.textfield.TextInputLayout
            android:id="@+id/formulario_produto_nome"
            style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_margin="16dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

            <com.google.android.material.textfield.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/nome_completo" />
        </com.google.android.material.textfield.TextInputLayout>

Para capturar o conteúdo (texto) dele, tudo certo:

        val campoNome = binding.formularioProdutoNome
        val nome = campoNome.editText?.text.toString()

Mas eu não estou conseguindo setar o conteúdo com texto:

binding.formularioProdutoNome.setText(produto.nome)

Erro: Unresolved reference: setText

Não estou conseguindo setar o valor do TextInputEditText de jeito nenhum, estou a horas lendo a documentação e não encontro o equivalente a função setText() ou simplesmente text

Como o prof. Alex conseguiu fazer isso no video "04 Carregando produto no formulário" do capitulo 5?

1 resposta

Olá, Cleyton.

Tudo bem?

No seu caso, o problema está em tentar usar setText() diretamente no TextInputLayout, que não possui esse método. Você precisa acessar o TextInputEditText dentro do TextInputLayout para definir o texto.

Aqui está como você pode fazer isso:

val campoNome = binding.formularioProdutoNome.editText
campoNome?.setText(produto.nome)

Vamos explicar isso passo a passo:

  1. Capturar o TextInputEditText: Você já está fazendo isso corretamente ao capturar o TextInputLayout com binding.formularioProdutoNome.
  2. Acessar o TextInputEditText: Use editText para acessar o TextInputEditText dentro do TextInputLayout.
  3. Definir o texto: Use setText() no TextInputEditText para definir o texto.

Aqui está um exemplo completo:

val campoNome = binding.formularioProdutoNome.editText
campoNome?.setText(produto.nome)

Espero ter entendido e conseguido ajudar. Qualquer dúvida manda aqui. Bons estudos.