【问题标题】:How do I differentiate between Longclicks and onclick events?如何区分 Longclicks 和 onclick 事件?
【发布时间】:2023-04-09 11:27:02
【问题描述】:

我试图在单击标题一次时打开一个片段,在长按时打开另一个片段,但是无论长按还是轻按一次,它们都会在单击时立即触发。我如何区分两者? 这是我的代码块:

case R.id.market_header:
            marketHeader.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View vi) {
                    ((MainActivity) getActivity()).onMarketClicked(view);
                }

            });
            marketHeader.setOnLongClickListener(new OnLongClickListener() {   
                   @Override
                   public boolean onLongClick(View v) {

                 TestcaseFragment2.newInstance(getFragmentManager());

                    return false;
                   }
                  }); 
            break;

【问题讨论】:

    标签: android android-intent android-listview android-fragments android-alertdialog


    【解决方案1】:

    您应该在 onLongClick 中返回 true,以便系统知道您已经处理了该事件。

    【讨论】:

    • 知道如何将片段显示为弹出窗口吗?
    • 是的,希望测试片段显示在警告框/对话框中
    • 我需要对话框来包含片段的内容,有点像片段的容器,所以当我长按它时会弹出片段容器
    • 所以您的 Fragment 看起来就像一个对话框,只需使用 FragmentTransaction 将 Fragment 提交到您的容器中即可。
    【解决方案2】:

    您应该在 setOnLongClickListener

    上返回 true
    marketHeader.setOnLongClickListener(new OnLongClickListener() {   
                       @Override
                       public boolean onLongClick(View v) {
    
                     TestcaseFragment2.newInstance(getFragmentManager());
    
                        return true; //change here
                       }
                      }); 
    

    OnLongClick 返回一个boolean 表示您是否已经消费了该事件并且不应继续进行。也就是说,返回true表示你已经处理了事件,应该在这里停止

    【讨论】:

      猜你喜欢
      • 2019-10-13
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多