小编Red*_*oud的帖子

使用 ViewBinding 进行多种布局

编辑-解决方案

使用视图绑定时,将为每个 xml 生成一个 Java 绑定文件。问题是当您修改 xml 时,它不会重新生成 Java 文件。因此,当我向 Activity_main.xml 中的 App_bar_main 添加 ID 标签时,我收到一条错误消息,指出它找不到该标签,不是因为它不喜欢它,而是因为它仍在使用旧的 Java 文件。使缓存失效并重新启动也不会影响那些生成的 java 绑定文件。

重新生成文件的唯一方法是删除它们。

添加 ID 后,我只需使用其 ID 调用 appBarMain,而不是尝试膨胀其布局。

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
...
    private ActivityMainBinding mActivityMainBinding;
    private AppBarMainBinding mAppBarMainBinding;
...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mActivityMainBinding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(mActivityMainBinding.getRoot());

        mAppBarMainBinding = mActivityMainBinding.appBarMain;
        setSupportActionBar(mAppBarMainBinding.toolbar);

        mAppBarMainBinding.fabCollapse.fab_collapse.setOnClickListener(view -> {
            Log.d(TAG, "Clicked fab_collapse");
        });
   }
}
Run Code Online (Sandbox Code Playgroud)

活动主文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start"> …
Run Code Online (Sandbox Code Playgroud)

java android android-viewbinding

8
推荐指数
2
解决办法
8586
查看次数

标签 统计

android ×1

android-viewbinding ×1

java ×1