IF语句中的SetOnClickListener未检测到点击

时间:2019-01-06 13:22:09

标签: java android

我正在创建一个在toggle-button中具有toolbar的{​​{1}}的应用程序。问题是我希望appbar缩回当我在屏幕上的任何地方按时,它会向上移动,但是它无法检测到屏幕上的点击。

修改 下拉列表如下所示: https://i.imgur.com/dFg0L3v.gif
现在,我只是隐藏并显示该栏,而不是为了简单起见对其设置动画。

我尝试在打开appbar时将OnClickListener设置为基础布局(coordinatorlayout),但未检测到任何点击。

代码
我正在使用XML标记来检测应用栏是在单击时关闭还是打开,XML文件中的默认设置为“关”。

dropdown

我认为问题出在我在else-if语句中设置OnClickListener的事实,但是我不知道如何将OnClickListener设置为仅在下拉列表打开时才处于活动状态。有什么建议吗?

谢谢!

3 个答案:

答案 0 :(得分:0)

我没有正确解决您的问题,但我知道将按钮设置为按条件是一种非常糟糕的做法。因此,首先,您可以在没有任何条件的情况下将这段代码移入onCreate()中:

cLayout.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        yearBar.setVisibility(View.GONE);
                        yearBar.setTag("off");
                        Toast.makeText(getActivity(),"Click detected!", Toast.LENGTH_LONG).show();
                    }
                });

现在,如果您想提供条件,则必须调用onClick。

答案 1 :(得分:0)

您可以声明一个Boolean变量来保存dropDown的状态。在if语句之外设置onClick并检查其中的状态。 这是最简单的方法,但是您可以按以下方式使用视图的选择状态:

@Override
public void onClick(View v) {
         if(v.selected()){
             yearBar.setVisibility(View.GONE);
             yearBar.setTag("off");
             Toast.makeText(getActivity(),"Click detected!", Toast.LENGTH_LONG).show();
         }
         else{
              //do somthing else
         }
         v.setSelected(!v.isSelected());
}

答案 2 :(得分:0)

您可以省略使用标记,因为已经可以使用视图可见性布尔值来代替了。 同样,也无需在菜单项的切换条件下添加for(var i=0; i< photos.length; i++){ for(var j=0; j< comments.length; j++){ if(photos[i].id == comments[j].photoTarget){ //I can't get this part to work } } } 您可以将其正常放置在片段的onClickListener

您可以执行以下操作

onCreateView()