使用点击监听器

时间:2017-01-11 08:35:36

标签: android android-edittext

我的要求是,只需单击编辑文本,用户就可以输入数据,双击转到所有数据都存在的活动。

我使用逻辑再次按退出,我无法实现它。

        ETBarCode.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            doublePress=doubleTap();
            if(doublePress) {
                ETBarCode.requestFocus();
                InputMethodManager imm=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(ETBarCode.getWindowToken(), 0);
            }
            else
            {
                Toast.makeText(MoveActivity.this, "Enter Data", Toast.LENGTH_SHORT).show();
                ETBarCode.requestFocus();
                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.showSoftInput(ETBarCode, 0);

            }
        }
    });
}

private boolean doubleTap()
{
    if (doubleBackToExitPressedOnce) {
        Toast.makeText(this, "Scanning", Toast.LENGTH_SHORT).show();
        return doubleBackToExitPressedOnce;
    }
    this.doubleBackToExitPressedOnce = true;
    new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
            doubleBackToExitPressedOnce = false;
        }
    }, 2000);
    return doubleBackToExitPressedOnce;
}

有什么方法可以解决它吗?

3 个答案:

答案 0 :(得分:3)

使用GestureDetector检测:

final GestureDetector gestureDetector = new GestureDetector(your_context,new GestureDetector.SimpleOnGestureListener() {
    public boolean onDoubleTap(MotionEvent e) {
        // start activity
        return true;
    }
});

EditText et = (EditText) findViewById(R.id.your_id);
et.setOnTouchListener(new View.OnClickListener() {
    public boolean onTouch(View v, MotionEvent event) {
        return gestureDetector.onTouchEvent(event);
    }
});

答案 1 :(得分:0)

您可以使用计数器变量进行管理:

int count = 0;

ETBarCode.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            count++;
            doublePress=doubleTap();
            if(count==1) {
              ShowData();
              count=0;

            }
            else if(count==2){
               StartNewActivity();
              count=0;
            }

        }
    });

}

希望这会对你有所帮助。

答案 2 :(得分:0)

这应该可以解决您的问题。我尝试尽可能少地从您的代码中进行更改,但有些事情并不清楚(您究竟在哪里重定向到新活动?)。此外,我不建议这个双击来继续用户体验,这是非常规的。我宁愿把它作为“视图”动作的可点击TextView(设计清楚地表明可点击性),以及旁边的“编辑”动作的图像按钮(好的旧铅笔)。

ETBarCode.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

        if(isDoubleClick()) {
            ETBarCode.requestFocus();
            InputMethodManager imm=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(ETBarCode.getWindowToken(), 0);
        }
        else {
            Toast.makeText(MoveActivity.this, "Enter Data", Toast.LENGTH_SHORT).show();
            ETBarCode.requestFocus();
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(ETBarCode, 0);
        }
    }
});

private boolean isDoubleClick() {
    if (!userHasClickedOnce) {
        Toast.makeText(this, "Scanning", Toast.LENGTH_SHORT).show();
        return false;
    }

    new Handler().postDelayed(new Runnable() {
    @Override
        public void run() {
            userHasClickedOnce = false;
        }
    }, 2000);

    return true;
}
相关问题