user13956450
user13956450

Reputation:

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)
    }
}

}

Upvotes: 0

Views: 789

Answers (2)

Mohammad Khair
Mohammad Khair

Reputation: 476

Try

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = DataBindingUtil.setContentView(this, R.layout.activity_main)


    val fab = binding.fabAdd

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

Upvotes: 0

Jay Rathod
Jay Rathod

Reputation: 11245

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)
    }  
}

Upvotes: 3

Related Questions