Esse erro começou depois que tentei aplicar o desafio de criar uma Activity de detalhes após clicar em um produto da lista. já tentei de diversas formas, até baixei o código com o desafio já feito, fiz igual e mesmo assim o erro persiste.
Esse erro começou depois que tentei aplicar o desafio de criar uma Activity de detalhes após clicar em um produto da lista. já tentei de diversas formas, até baixei o código com o desafio já feito, fiz igual e mesmo assim o erro persiste.
activity detalhes:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imagem_activity_detalhes_produtos"
android:layout_width="0dp"
android:layout_height="200dp"
android:scaleType="centerCrop"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toTopOf="@id/titulo_activiry_detalhes_produtos"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/backgrounds/scenic" />
<TextView
android:id="@+id/valor_activiry_detalhes_produtos"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:layout_margin="16dp"
android:elevation="10dp"
android:textSize="24sp"
android:backgroundTint= "#f9f9f9"
android:background="@drawable/border"
android:textColor="@color/colorSecondary"
android:fontFamily="@font/montserrat_bold"
app:layout_constraintTop_toBottomOf="@id/imagem_activity_detalhes_produtos"
app:layout_constraintBottom_toTopOf="@id/titulo_activiry_detalhes_produtos"
app:layout_constraintStart_toStartOf="parent"
tools:text="R$ 1299,99"/>
<TextView
android:id="@+id/titulo_activiry_detalhes_produtos"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:paddingTop="10dp"
android:fontFamily="@font/montserrat_bold"
android:maxLines="4"
android:textSize="28sp"
app:layout_constraintBottom_toTopOf="@id/descricao_activiry_detalhes_produtos"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/imagem_activity_detalhes_produtos"
tools:text="@tools:sample/lorem/random" />
<TextView
android:id="@+id/descricao_activiry_detalhes_produtos"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/titulo_activiry_detalhes_produtos"
tools:text="@tools:sample/lorem/random" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
Activity detalhes - kotlin:
class DetalhesProdutosActivity : AppCompatActivity() {
private val binding by lazy {
ActivityDetalhesProdutosBinding.inflate(layoutInflater)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
tentaCarregarProduto()
}
private fun tentaCarregarProduto() {
intent.getParcelableExtra<Produto>(CHAVE_PRODUTO)?.let { produtoCarregado ->
preencherCampos(produtoCarregado)
} ?: finish()
}
private fun preencherCampos(produtoCarregado: Produto) {
with(binding) {
imagemActivityDetalhesProdutos.tentaCarregarImagem(produtoCarregado.imagem)
tituloActiviryDetalhesProdutos.text = produtoCarregado.nome
descricaoActiviryDetalhesProdutos.text = produtoCarregado.descricao
valorActiviryDetalhesProdutos.text = produtoCarregado.valor.formataMoedaReal()
}
}
}
Adapter:
class ListaProdutosAdapter(
private val context: Context,
produtos: List<Produto>,
var quandoClicaNoItem: (produto: Produto) -> Unit = {}
) : RecyclerView.Adapter<ListaProdutosAdapter.ViewHolder>() {
private val produtos = produtos.toMutableList()
inner class ViewHolder(private val binding: ProdutoItemBinding) :
RecyclerView.ViewHolder(binding.root) {
private lateinit var produto: Produto
init {
itemView.setOnClickListener{
if (::produto.isInitialized){
quandoClicaNoItem(produto)
}
}
}
Constante:
const val CHAVE_PRODUTO = "produto"
extention bigdecimal:
fun BigDecimal.formataMoedaReal(): String {
val formatador: NumberFormat = NumberFormat
.getCurrencyInstance(Locale("pt", "br"))
return formatador.format(this)
}
app/build.gradle:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'org.jetbrains.kotlin.android'
id 'kotlin-parcelize'
}
![](
![](
Olá, André!
Esse erro pode ocorrer por diferentes motivos, mas geralmente está relacionado a problemas na configuração do Gradle ou em alguma dependência do projeto.
Uma possível solução é verificar se todas as dependências estão corretamente configuradas no arquivo build.gradle. Certifique-se de que todas as versões das bibliotecas estão compatíveis e atualizadas.
Outra opção é limpar o cache do Gradle. Para fazer isso, você pode executar o comando "gradlew clean" no terminal, dentro do diretório do projeto.
Além disso, é importante verificar se todas as dependências necessárias foram adicionadas corretamente no arquivo build.gradle.
Espero ter ajudado e bons estudos!