Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么我的onClickListener应该双击?_Android - Fatal编程技术网

Android 为什么我的onClickListener应该双击?

Android 为什么我的onClickListener应该双击?,android,Android,我将onClickListener添加到了由extend LinearLayout编写的NavLinearLayout中,每次它都应该双击,然后里面的函数就可以工作了。但是这个函数意味着它只需单击一次就可以工作。为什么? 这是我的导航线布局 public class NavLinearLayout extends LinearLayout{ public NavLinearLayout(Context context) { super(context); } public NavLi

我将onClickListener添加到了由extend LinearLayout编写的NavLinearLayout中,每次它都应该双击,然后里面的函数就可以工作了。但是这个函数意味着它只需单击一次就可以工作。为什么? 这是我的导航线布局

public class NavLinearLayout extends LinearLayout{

public NavLinearLayout(Context context)
{
    super(context);
}

public NavLinearLayout(Context context, AttributeSet attrs)
{
    super(context, attrs);
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev)
{
    // do whatever you want with the event
    // and return true so that children don't receive it
    return true;
}}
这是主活动代码:

boutiqueLL.setOnClickListener(new OnClickListener()
    {
        @Override
        public void onClick(View arg0)
        {
            setFlagTrue(Navigation.Boutique.getPosition());
            setBtnLine();
        }

    });private void setFlagTrue(int position) {
    sousuoFlag = position == 4 ? true : false;
    dingyueFlag = position == 3 ? true : false;
    fenleiFlag = position == 2 ? true : false;
    boutiqueFlag = position == 1 ? true : false;
}private void setBtnLine() {
    Log.d("test",(boutiqueFlag?"true":"false")+" : "
            +(fenleiFlag?"true":"false")+" : "
            +(dingyueFlag?"true":"false")+" : "
            +(sousuoFlag?"true":"false"));
    if (sousuoFlag) {
        sousuoLine.setBackgroundColor(Color.RED);
        ft = fm.beginTransaction();
        ft.replace(R.id.main_page, new SearchFragment(mdb));
        ft.addToBackStack(null);
        ft.commit();

    } else {
        sousuoLine.setBackgroundColor(Color.argb(0, 0, 0, 0));
    }
    if (dingyueFlag) {
        dingyueLine.setBackgroundColor(Color.RED);
        ft = fm.beginTransaction();
        ft.replace(R.id.main_page, new SubscribeFragment(mdb));
        ft.addToBackStack(null);
        ft.commit();
    } else {
        dingyueLine.setBackgroundColor(Color.argb(0, 0, 0, 0));
    }
    if (fenleiFlag) {
        fenleiLine.setBackgroundColor(Color.RED);
        ft = fm.beginTransaction();
        ft.replace(R.id.main_page, new FenLeiFragment(hanlder,mdb));
        ft.addToBackStack(null);
        ft.commit();
    } else {
        fenleiLine.setBackgroundColor(Color.argb(0, 0, 0, 0));
    }
    if (boutiqueFlag) {
        boutiqueLine.setBackgroundColor(Color.RED);
        ft = fm.beginTransaction();
        ft.replace(R.id.main_page, new BoutFragmentNew(mdb));
        ft.commit();
    } else {
        boutiqueLine.setBackgroundColor(Color.argb(0, 0, 0, 0));
    }

}

我使用OnTouchListener而不是OnClickListener。它可以工作,但我不知道为什么我的OnClickListener现在需要双击。

对于您的问题,这可能是一种解释:
正如我所看到的,您已经扩展了LinearLayout,它提供了InterceptTouchEvents(),可用于触摸事件。
因此,在此布局上,您有一个touchevent侦听器和一个clickevent侦听器,在这种情况下,当您首先单击布局时,将调用touch事件,然后第二次调用click事件。

这就是您的touchevent工作的原因。

您能更清楚地告诉我们问题出在哪里吗?双击时它不工作,还是双击时它不工作?我应该双击让它工作,但该功能意味着只有单击一次才能使其工作。