为什么我的浮动操作按钮 onclick 不起作用?

why is my Floating Action Button onclick not working?

您好,我有一个 FAB fab_main,它有一个 onclick,可以为其他 FAB 启用 onclick。现在 fab_main 的 onclick 起作用了,但是其他的根本不起作用,为什么?代码是一样的,不是吗?

已经尝试为他们取消 hide() 但这没有帮助...

我可能会尝试切换到支持库 fab,但如果那是问题所在 fab_main 的 onclick 将无法正常工作,对吗?

xml:

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/floating_action_button_main"
            style="@style/Widget.MaterialComponents.FloatingActionButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_margin="16dp"
            android:clickable="true"
            app:srcCompat="@android:drawable/ic_input_add" />

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/floating_action_button_house"
            style="@style/Widget.MaterialComponents.FloatingActionButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_margin="16dp"
            android:clickable="true"
            app:srcCompat="@android:drawable/ic_input_add" />

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/floating_action_button_building"
            style="@style/Widget.MaterialComponents.FloatingActionButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_margin="16dp"
            android:clickable="true"
            app:srcCompat="@android:drawable/ic_input_add" />

java:

import com.google.android.material.floatingactionbutton.FloatingActionButton;

FloatingActionButton fab_main = findViewById(R.id.floating_action_button_main);
        FloatingActionButton fab_house = findViewById(R.id.floating_action_button_house);
        FloatingActionButton fab_Building = findViewById(R.id.floating_action_button_building);

//hides fabs
        fab_house.hide();
        fab_Building.hide();

        //defines the main fab onclick
        fab_main.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(!isFABOpen){
                    showFABMenu();
                }else{
                    closeFABMenu();
                }
            }
        });

fab_house.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                closeFABMenu();
  });
            }
        });

    }

private void showFABMenu(){
        FloatingActionButton fab_main = findViewById(R.id.floating_action_button_main);
        FloatingActionButton fab_house = findViewById(R.id.floating_action_button_house);
        FloatingActionButton fab_Building = findViewById(R.id.floating_action_button_building);
        isFABOpen=true;
        fab_house.setOnClickListener(null);
        fab_Building.setOnClickListener(null);
        fab_house.show();
        fab_Building.show();
        fab_house.animate().translationY(-getResources().getDimension(R.dimen.standard_62));
        fab_Building.animate().translationY(-getResources().getDimension(R.dimen.standard_125));
    }

    private void closeFABMenu(){
        FloatingActionButton fab_main = findViewById(R.id.floating_action_button_main);
        FloatingActionButton fab_house = findViewById(R.id.floating_action_button_house);
        FloatingActionButton fab_Building = findViewById(R.id.floating_action_button_building);
        isFABOpen=false;
        fab_house.animate().translationY(0);
        fab_Building.animate().translationY(0);
        fab_house.hide();
        fab_Building.hide();
    }

编辑: 我的错误,fab onclick nulls 应该在其他函数中...

在您的函数 showFABMenu() 中,此行删除 fab_houseonClickListener():

fab_house.setOnClickListener(null);

删除此行以解决问题

fab_Building 没有 onClickListener() 定义

您已在 show fabMenu 中将 fab_house onClick 方法设置为空。要么将其设置为此并实施重写 onClick 方法,要么只删除行