Как я могу получить доступ к Toolbar
(на самом деле MaterialToolbar
) из Fragment
, используя activity.actionBar
?
main_layout. xml (извлечение):
<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 (извлечение):
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
[..]
setSupportActionBar(binding.toolbar)
}
MyFragment (извлечение):
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")
}
}
Вывод из операторы отладки в MyFragment :
DEF: activity == null: false
DEF: activity.actionbar == null: true
Поскольку я использовал setSupportActionBar(binding.toolbar)
в MainActivity
, не должно ли activity.actionbar
быть ненулевым? Что я здесь делаю не так?
Подсказка: насколько мне известно, в качестве альтернативы я могу использовать activity.findViewById(R.id.toolbar)
. Этот вопрос действительно о том, почему activity.actionBar
не работает.