作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在尝试在用户按住按钮时执行一些操作。
我的问题是我的Runnable
不会“运行”。
这是我的代码:
@Override
public boolean onLongClick(View v) {
final Runnable r = new Runnable()
{
public void run()
{//do the forwarding logic here
int test = 0;
if(holdingDown)
test++;
else
return;
Log.i("test", test+"");
}
};
r.run();
}
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_UP:
{
holdingDown= false;
Log.i("holdingDown", "false");
break;
}
}
return false;
}
onTouch
用于检测用户何时停止按下按钮。当我查看日志时,我发现 Runnable
仅运行一次。
我的测试日志只得到值1。
仅当我停止触摸按钮时,Log.i("holdingDown", "false")
的日志调用才会在正确的时间触发。
为什么我的Runnable
无法运行?谢谢。
编辑:
我尝试了这段代码:
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
holdingDown = true;
new Thread(new Runnable() {
@Override
public void run() {
if(holdingDown)
{
int test = 0;
test++;
Log.i("test", test+"");
}
else
return;
}
}).start();
return false;
}
它直到无法工作。
最佳答案
您可以尝试使用 Thread 而不是 Runnable,如下所示:
Thread thread = new Thread() {
@Override
public void run() {
//code you want to run on long press
} };
thread.start();
或者
您可以尝试将 Runnable 放入线程中,如下所示:
Thread thread = new Thread(new Runnable() {
public void run() {
// code you want to run on long press
}
});
thread.start();
更新:-试试这个?
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
holdingDown = true;
new Thread(new Runnable() {
@Override
public void run() {
if (holdingDown) {
int test = 0;
test++;
Log.i("test", test + "");
} else {
Log.i("test", "else");
}
return;
}
}).start();
return false;
}
关于java - 长按时执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21043762/
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我是一名优秀的程序员,十分优秀!