我的要求是,只需单击编辑文本,用户就可以输入数据,双击转到所有数据都存在的活动。
我使用逻辑再次按退出,我无法实现它。
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;
}
有什么方法可以解决它吗?
答案 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;
}