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

Ao implementar código para botão a activity não é chamada e o app fecha

//Main activity
package br.com.alura.orgs.ui.activity

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import br.com.alura.orgs.R

class MainActivityLogin : AppCompatActivity() {

        lateinit var botaoEntrar: Button
        //lateinit var botaoEsqueceuSenha: Button

        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main_login)


            botaoEntrar = findViewById(R.id.botaoEntrar)
            //botaoEsqueceuSenha = findViewById(R.id.botaoEsqueceuSenha)
            botaoEntrar.setOnClickListener {
                val intent = Intent(this, GeneroActivity::class.java)
                startActivity(intent)
            }
        }
}

            /*botaoEsqueceuSenha.setOnClickListener {
                val intent = Intent(this, RecyclerView::class.java)
                startActivity(intent)
            }*/    

            //Genero Activity

            package br.com.alura.orgs.ui.activity

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import androidx.recyclerview.widget.RecyclerView
import br.com.alura.orgs.R
import br.com.alura.orgs.model.Genero
import br.com.alura.orgs.ui.recyclerview.adapter.GeneroProdutosAdapter
import java.math.BigDecimal

class GeneroActivity : Activity() {

   // lateinit var botaoGeneroProduto: Button

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_generos_activity)

       /* botaoGeneroProduto = findViewById(R.id.botaoGeneroProduto)
        botaoGeneroProduto.setOnClickListener {
            val intent = Intent(this, ProdutosActivity::class.java)
            startActivity(intent)
        }*/

        val recyclerView = findViewById<RecyclerView>(R.id.recyclerViewGenero)
        recyclerView.adapter = GeneroProdutosAdapter(context = this, genero = listOf(
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
            Genero(nome = "Sésamo"),
        ))

    }
}

Olá. eu gostaria de saber como faço para chamar uma activity com recycler view usando um botão com algum dos listener. Por exemplo, fiz várias activities com layouts para uma cafeteria: uma pagina de login, uma página com escolha de generos de produtos, uma pagina com escolha dos produtos e o carrinho de compras. No entanto toda vez que eu implemento a recycler das paginas, e ativo os comentários que estão na GeneroActivity como mostrado acima (para funcionarem como código) e rodo o app, a main activity abre e apos apertar o botao "entrar" da pagina de login o app fecha. Se eu deixo essa parte apenas como comentários, a activity roda mostrando apenas minha lista mas sem o botão que desejo ser implementado. Por enquanto eu só quero navegar pelos layouts, sem implementações lógicas como de segurança por exemplo; ou seja, quando aperto determinado botao só quero que ele me leve para a proxima activity(sem condicoes logicas a serem seguidas) . Os layouts estao com a hierarquia correta. No fim das contas só consigo rodar activities com Recycler view quando elas sao implementadas na main, mas nao em outras activities se elas tiverem botões com código já implementado para eles. Se puderem ajudar agradeço muito... :)

3 respostas

Tu chegou a cadastrar a outra activity no manifest ?

Além disso, quando o app fecha, é gerado uma exception no logcat, tu consegue pegar e jogar aqui no fórum pra gente dar uma olhada ?

Muito obrigado, consegui corrigir. Realmente o nome que estava no Manifest estava errado. Mas continuo com o problema do botão: Esse erro me é apresentado assim:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ssamo21, PID: 2051
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.ssamo21/com.example.ssamo21.EscolherOProduto}: java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout cannot be cast to androidx.recyclerview.widget.RecyclerView
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3270)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7355)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940)
     Caused by: java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout cannot be cast to androidx.recyclerview.widget.RecyclerView
        at com.example.ssamo21.EscolherOProduto.onCreate(EscolherOProduto.kt:15)
        at android.app.Activity.performCreate(Activity.java:7824)
        at android.app.Activity.performCreate(Activity.java:7813)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3245)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7355) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:940) 

solução!

da uma olhada nos ids, vai via xml, você acabou colocando id em componentes errados ou tá usando o componentes errado. olha seu recycler view e também o constraint layout