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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 ViewBinding 進(jìn)行多種布局

使用 ViewBinding 進(jìn)行多種布局

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

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>


查看完整回答
反對(duì) 回復(fù) 2023-11-10
?
長(zhǎng)風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個(gè)贊

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



查看完整回答
反對(duì) 回復(fù) 2023-11-10
?
湖上湖

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


查看完整回答
反對(duì) 回復(fù) 2023-11-10
?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個(gè)贊

你可以嘗試使用這個(gè)嗎

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

對(duì)我來(lái)說(shuō)效果很好。


查看完整回答
反對(duì) 回復(fù) 2023-11-10
  • 4 回答
  • 0 關(guān)注
  • 274 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)