How can I access a Toolbar (actually a MaterialToolbar) from a Fragment using activity.actionBar?
main_layout.xml (extract):
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:liftOnScroll="true">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_collapseMode="pin"
app:popupTheme="@style/AppTheme.PopupOverlay"
android:background="#ffffff">
</com.google.android.material.appbar.MaterialToolbar>
</com.google.android.material.appbar.AppBarLayout>
MainActivity (extract):
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
[..]
setSupportActionBar(binding.toolbar)
}
MyFragment (extract):
class MyFragment: Fragment() {
[..]
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val actNull = activity == null
Timber.i("DEF: activity == null: $actNull")
var barNull = activity?.actionBar == null
Timber.i("DEF: activity.actionbar == null: $barNull")
}
}
Output from the debug statements in the MyFragment:
DEF: activity == null: false
DEF: activity.actionbar == null: true
As I used setSupportActionBar(binding.toolbar) in the MainActivity, shouldn't activity.actionbar be non-null? What am I doing wrong here?
Hint: As far as I know I can alternatively use activity.findViewById(R.id.toolbar). This question is really about why activity.actionBar isn't working.