4 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超10個(gè)贊
使用視圖綁定時(shí),將為每個(gè) xml 生成一個(gè) Java 綁定文件。問題是當(dāng)您修改 xml 時(shí),它不會(huì)重新生成 Java 文件。因此,當(dāng)我向 Activity_main.xml 中的 App_bar_main 添加 ID 標(biāo)簽時(shí),我收到一條錯(cuò)誤消息,指出它找不到該標(biāo)簽,不是因?yàn)樗幌矚g它,而是因?yàn)樗栽谑褂门f的 Java 文件。使緩存失效并重新啟動(dòng)也不會(huì)影響那些生成的 java 綁定文件。
重新生成文件的唯一方法是刪除它們。
添加 ID 后,我只需使用其 ID 調(diào)用 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");
});
}
}
活動(dòng)主文件
<?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">
<include
layout="@layout/app_bar_main"
android:id="@+id/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</androidx.drawerlayout.widget.DrawerLayout>

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊
您只需要設(shè)置內(nèi)容視圖,然后就可以通過(guò)mActivityMainBinding.appBarMain訪問appbar。

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
通過(guò)視圖綁定為包含的布局提供一個(gè) id 會(huì)更容易
代替
<include layout="@layout/content_main" />
只需使用
<include
android:id="@+id/contentmain"
layout="@layout/content_main" />
綁定將是 binding.contentmain

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊
你可以嘗試使用這個(gè)嗎
mAppBarMainBinding = DataBindingUtil.setContentView(this, R.layout.your_activity);
對(duì)我來(lái)說(shuō)效果很好。
添加回答
舉報(bào)