【问题标题】:Second click on floating button with image (example: Add to favorite)第二次单击带有图像的浮动按钮(例如:添加到收藏夹)
【发布时间】:2018-05-22 23:55:02
【问题描述】:

第一次点击:浮动按钮上的图片会变成实心红色并提交数据到 Firebase。

第二次点击:浮动按钮上的图像将变回边框,并将从 Firebase 中删除该项目。

但似乎是我从 Firebase 中删除项目的第二次点击无法正常工作。

btnLove.setOnClickListener(new View.OnClickListener() {
        boolean showingFirst;
        @Override
        public void onClick(View v) {
            if(showingFirst == true){
                btnLove.setImageResource(R.drawable.fav_filled_50);
                showingFirst = false;

                fav =  new Favorites(Common.currentUser.getPhone(),
                        drinkId,
                        currentDrink.getName(),
                        currentDrink.getImage(),
                        currentDrink.getPrice()
                        );
                favorites.child(Common.currentUser.getPhone()).child(drinkId).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        if(dataSnapshot.child(Common.currentUser.getPhone()).exists())
                        {
                            favorites.child(Common.currentUser.getPhone()).child(drinkId).removeValue();
                            favorites.child(Common.currentUser.getPhone()).child(drinkId).setValue(fav);
                        }
                        else
                        {
                            favorites.child(Common.currentUser.getPhone()).child(drinkId).setValue(fav);
                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });


            } else {
                btnLove.setImageResource(R.drawable.fav_border_50);
                btnLove.setTag(70);
                showingFirst = true;
                favorites.child(Common.currentUser.getPhone()).child(drinkId).removeValue();

            }


        }
    });

【问题讨论】:

  • 是否进入else
  • 亲爱的先生,否则当用户第二次点击并且图标返回到showingFirst = true时。这是什么时候,项目应该被删除
  • 它没有进入else语句,因为showingfirst总是等于true,onclicklistenershowingfirst=true,然后它进入if,showingfirst等于false。在另一次点击中,它再次输入onclicklistener,showingfirst 再次等于 true.. 所以它没有进入 else 语句
  • 尊敬的先生,感谢您的解释。我已经编辑了上面的代码,但它没有从 Firebase 中删除项目
  • 只需创建另一个按钮

标签: android firebase-realtime-database floating-action-button


【解决方案1】:

删除

boolean showingFirst = true;

形成 setOnClickListener 并将其放入 setOnClickListener 方法之外。当您单击按钮时,showingFirst 将始终正确,因为您只是创建了它。

【讨论】:

  • 尊敬的先生,感谢您的解释。我已经编辑了上面的代码,但它没有从 Firebase 中删除项目
  • 请停止在 onclick 方法中创建“showingFirst”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-02
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多