Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Bug] App não abre a activity de detalhes

Olá, meu projeto estava indo bem, até não abrir a tela de detalhes. O app não crasha, só não abre mesmo

link do github: https://github.com/takt1/Orgs

2 respostas
solução!

Olá, Juan! Pelo que entendi, você está tendo problemas para abrir a tela de detalhes do seu aplicativo. Vamos tentar resolver isso juntos!

Primeiramente, pelo que foi descrito na aula, você precisa implementar um listener no adapter do RecyclerView para acessar o produto clicado e abrir a tela de detalhes do produto. Aqui está um exemplo de como você pode fazer isso:

class SeuAdapter : RecyclerView.Adapter<SeuAdapter.ViewHolder>() {
    //...
    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        init {
            itemView.setOnClickListener {
                val position = adapterPosition
                if (position != RecyclerView.NO_POSITION) {
                    val item = getItem(position)
                    val intent = Intent(itemView.context, DetalhesProdutoActivity::class.java)
                    intent.putExtra("produto", item)
                    itemView.context.startActivity(intent)
                }
            }
        }
    }
    //...
}

Este exemplo considera que seu objeto Produto é Parcelable. Se não for, você precisará torná-lo Parcelable para poder passá-lo entre as Activities. Aqui está um exemplo de como você pode fazer isso:

@Parcelize
data class Produto(
    val nome: String,
    val descricao: String,
    val valor: Double
) : Parcelable

Depois, na sua Activity de detalhes do produto, você precisa receber o objeto Produto passado como extra. Aqui está um exemplo de como você pode fazer isso:

class DetalhesProdutoActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_detalhes_produto)

        val produto = intent.getParcelableExtra<Produto>("produto")
        if (produto == null) {
            finish()
            return
        }
        // use o objeto produto para atualizar a UI
    }
}

Por fim, certifique-se de que a Activity de detalhes do produto está declarada no seu arquivo AndroidManifest.xml:

<activity android:name=".DetalhesProdutoActivity" />

Revisando, essas são as etapas gerais que você precisa seguir para implementar a funcionalidade de abrir a tela de detalhes ao clicar em um item do RecyclerView. Se você já fez tudo isso e ainda está tendo problemas, pode ser útil verificar se há algum erro no log do Logcat.

Espero ter ajudado e bons estudos!

Oi Matheus, eu já havia feito tudo isso, porém sua dica me fez revisar o código e perceber que havia uma palavra que não era para estar ali, esqueci que o apply do Intent já o referenciava sem necessitar chamá-lo:

Código anterior:

private fun configuraRecycler() {
        val recyclerView = binding.activityListaProdutosRecyclerView
        recyclerView.adapter = adapter
        recyclerView.layoutManager = LinearLayoutManager(this)
        adapter.produtoListaListener = {
            val intent = Intent(

                this,
                DetalhesProdutoActivity::class.java

            ).apply { this: Intent
               intent.putExtra(CHAVE_PRODUTO, it)
            }
            startActivity(intent)

        }
    }

Código correto:

private fun configuraRecycler() {
        val recyclerView = binding.activityListaProdutosRecyclerView
        recyclerView.adapter = adapter
        recyclerView.layoutManager = LinearLayoutManager(this)
        adapter.produtoListaListener = {
            val intent = Intent(

                this,
                DetalhesProdutoActivity::class.java

            ).apply { this: Intent
                putExtra(CHAVE_PRODUTO, it)
            }
            startActivity(intent)

        }
    }

Falta de atenção minha hehe