android - 查看绑定问题布局
问题描述
我正在使用 Android Studio 3.6.2 并启用了视图绑定功能。
在通过绑定使用包含标签添加视图时面临困难。
工具栏.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.MaterialToolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
style="?toolbarStyle"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:elevation="0dp" />
MainActivity.xml
<?xml version="1.0" encoding="utf-8"?>
<include
android:id="@+id/toolbar"
layout="@layout/toolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar"
app:navGraph="@navigation/merchant_navigation_graph" />
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AvailsTheme_DayNight)
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
val toolbarBinding = binding.toolbar
setContentView(binding.root)
}
}
解决方案
您正在访问包含的布局绑定,而不是包含的布局内的工具栏。我可以看到你没有提供MaterialToolbar
任何身份证件。因此,您需要为 XML 中的工具栏对象提供一个 ID,并将其包含在布局中,然后提供一个 ID,然后在您的 Kotlin 文件中像val toolbar = binding.includedLayout.toolbar
. 此外,您正在访问setContentView(binding.root)
错误之前的视图。您需要在尝试访问视图之前设置布局。
工具栏.xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.MaterialToolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar"
style="?toolbarStyle"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:elevation="0dp" />
MainActivity.xml
<include
android:id="@+id/includedLayout"
layout="@layout/toolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AvailsTheme_DayNight)
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val toolbar = binding.includedLayout.toolbar
}
}
推荐阅读
- javascript - 嵌套的 Firebase 查询 React Native 不显示结果(EXPO)
- angular - 如何根据某些条件应用角度材质样式属性?
- javascript - Javascript向后执行
- r - "pcadapt", "安装包 'bigutilsr' 的退出状态非零"
- javascript - 仅当我将鼠标悬停在 TD 上时才显示 JS 添加的链接
- oracle - 在 BI 发布者的数据模型中检索超过 200 行
- c++ - 前进时改变 FOV(视野)
- image - 在 JavaFX 中加载外部图像
- onlongclicklistener - Countinouly 减少 recylerview 适配器类中长按时的值
- r - 当“%in%”和“which”不起作用时,基于字符向量子集数据帧行