第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 ViewBinding 進行多種布局

使用 ViewBinding 進行多種布局

千巷貓影 2023-11-10 15:32:19
我正在嘗試將findViewById應用程序中的調(diào)用切換到新添加的調(diào)用ViewBinding,但與調(diào)用的視圖以外的視圖交互時遇到問題setContentView()。我膨脹AppBarMainBinding 的方式是否錯誤?或者我還缺少其他東西嗎?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 = AppBarMainBinding.inflate(getLayoutInflater());        setSupportActionBar(mAppBarMainBinding.toolbar);        mAppBarMainBinding.fabCollapse.fab_collapse.setOnClickListener(view -> {            Log.d(TAG, "Clicked fab_collapse");        });   }}包含activity_main.xml和<include layout="@layout/app_bar_main" />菜單app_bar_main.xml包含一個工具欄和一些操作按鈕在這種情況下,如果我setContentView(mActivityMainBinding.getRoot())在主活動的 onCreat() 中調(diào)用 ,應用程序將啟動activity_main布局并顯示操作按鈕和工具欄占位符,但所有按鈕都不起作用。單擊操作按鈕不會調(diào)用它,setOnClickListener并且工具欄為空白(它沒有實現(xiàn)setSupportActionBar(toolbar))活動主文件<?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"></androidx.drawerlayout.widget.DrawerLayout>
查看完整描述

4 回答

?
白衣染霜花

TA貢獻1796條經(jīng)驗 獲得超10個贊

使用視圖綁定時,將為每個 xml 生成一個 Java 綁定文件。問題是當您修改 xml 時,它不會重新生成 Java 文件。因此,當我向 Activity_main.xml 中的 App_bar_main 添加 ID 標簽時,我收到一條錯誤消息,指出它找不到該標簽,不是因為它不喜歡它,而是因為它仍在使用舊的 Java 文件。使緩存失效并重新啟動也不會影響那些生成的 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");

        });

   }

}

活動主文件


<?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>


查看完整回答
反對 回復 2023-11-10
?
長風秋雁

TA貢獻1757條經(jīng)驗 獲得超7個贊

您只需要設置內(nèi)容視圖,然后就可以通過mActivityMainBinding.appBarMain訪問appbar。



查看完整回答
反對 回復 2023-11-10
?
湖上湖

TA貢獻2003條經(jīng)驗 獲得超2個贊

通過視圖綁定為包含的布局提供一個 id 會更容易


代替


<include layout="@layout/content_main" />

只需使用


<include 

 android:id="@+id/contentmain"

layout="@layout/content_main" />

綁定將是 binding.contentmain


查看完整回答
反對 回復 2023-11-10
?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

你可以嘗試使用這個嗎

mAppBarMainBinding = DataBindingUtil.setContentView(this, R.layout.your_activity);

對我來說效果很好。


查看完整回答
反對 回復 2023-11-10
  • 4 回答
  • 0 關注
  • 241 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號