Search code examples
androidkotlinfloating-action-button

setOnclickListener event is not working for Floating action button in android?


Here is the xml code for this.....this is in constraint layout with a recycler view

<com.google.android.material.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab_add"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="44dp"
    android:layout_marginBottom="48dp"
    android:focusable="true"
    android:clickable="true"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    android:src="@drawable/ic_add"
    android:contentDescription="@string/add_book" />

and the Activity Code for this is here

private lateinit var binding: ActivityMainBinding

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

    binding = ActivityMainBinding.inflate(layoutInflater)
    val fab = binding.fabAdd

    fab.setOnClickListener {
        val intent = Intent(this,AddActivity::class.java)
        startActivity(intent)
    }
}

}


Solution

  • It should be done like this.

    You have to setContentView as root of view binding not layout.

    private lateinit var binding: ActivityMainBinding
    
    @Override
    fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
    
        binding.fab_add.setOnClickListener {
           val intent = Intent(this,AddActivity::class.java)
           startActivity(intent)
        }  
    }