gpt4 book ai didi

java - 长按时执行操作

转载 作者:行者123 更新时间:2023-12-02 06:20:45 25 4
gpt4 key购买 nike

您好,我正在尝试在用户按住按钮时执行一些操作。

我的问题是我的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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com