我想将浮动操作按钮用作某种收藏夹按钮,即书签功能。我正在使用boolean,初始化如下:

boolean favSelected = false;


并且我的活动将从SQLite数据库中检索一些信息,以确定favSelected是true还是false。如果是真的,我希望我的晶圆厂使用不同的颜色,如果是假的,则使用原始颜色。我尝试了这个:

    fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(favSelected = false) {
                favSelected = true;
                fab.setBackgroundTintList(new ColorStateList(new int[][]{new int[]{0}}, new int[]{getResources().getColor(R.color.header_pressed)}));
            } else if ( favSelected = true){
                favSelected = false;
                fab.setBackgroundTintList(new ColorStateList(new int[][]{new int[]{0}}, new int[]{getResources().getColor(R.color.colorPrimary)}));
            }

        }
    });


但这没用。预期的功能有点像复选框

最佳答案

您正在使用if(favSelected = false)这是favSelected的分配,请像(favSelected == false)一样使用。

为了进行比较,我们使用==符号代替=

所以像这样修改你的代码

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onClick(View view) {

                if (!favSelected) {
                    favSelected = true;
                    view.setBackgroundTintList(new ColorStateList(new int[][]
                            {new int[]{0}}, new int[]{getResources().getColor(R.color.colorAccent)}));
                } else if (favSelected) {
                    favSelected = false;
                    view.setBackgroundTintList(new ColorStateList(new int[][]{new int[]{0}}, new int[]{getResources().getColor(R.color.colorPrimary)}));
                }

            }
        });

07-27 21:19