为什么我的浮动操作按钮onclick无法正常工作?

时间:2019-09-19 12:39:44

标签: android onclick floating-action-button

嗨,我有一个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空值应该在其他函数中。

2 个答案:

答案 0 :(得分:1)

在函数showFABMenu()中,此行删除了fab_house的{​​{1}}:

onClickListener()

删除此行以解决问题

fab_house.setOnClickListener(null); 没有定义fab_Building

答案 1 :(得分:0)

您已在show fabMenu中将fab_house onClick方法设置为null。将其设置为此并实现重写onClick方法或仅删除该行