Reputation:
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
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
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