Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.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 setOnTouchListener中的While循环_Android_Button_Ontouchlistener - Fatal编程技术网

Android setOnTouchListener中的While循环

Android setOnTouchListener中的While循环,android,button,ontouchlistener,Android,Button,Ontouchlistener,我想在按下按钮时执行一些操作,在松开按钮时停止这些操作。我使用了以下代码,但它不起作用。您可以在这里查看我的代码- ok = (Button)findViewById(R.id.button1); ok.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { my_var=true

我想在按下按钮时执行一些操作,在松开按钮时停止这些操作。我使用了以下代码,但它不起作用。您可以在这里查看我的代码-

 ok = (Button)findViewById(R.id.button1);
 ok.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            my_var=true;
            if (event.getAction() == MotionEvent.ACTION_DOWN) {
                while(my_var) do_something();
            }else if (event.getAction() == MotionEvent.ACTION_UP) {
                my_var=false;
            }

            return true;
        }
    });

上述问题是否有其他解决方案。Thanx提前。

要实现这一点,您必须在do\u something方法中的某个地方将我的var设置为false。

我认为您需要的是一个
自动恢复按钮

基本上,它是一个扩展
按钮
并添加一些预定回调(您可以调整间隔)的类,只要
操作向下
运动事件
发生,这些回调就会发生

有一些实现是浮动的,但我最喜欢以下实现:


“不工作”从不帮助,请详细说明当您单击按钮时会发生什么情况??除非
my\u var
最初为
true
,否则将永远不会调用
do\u something()
。即使它是
真的
,当您释放触摸时(
动作_UP
),它被设置为
,因此下一次触摸将不起作用。@meda&@prashant patel:在while方法完成之前,它会做一些事情()。但是我想在用户释放按钮时停止它。看看这个线程(特别是
AutoRepeatButton
answer),这通常是我想要实现类似这样的东西的方式:但是我想在释放按钮时将我的变量设置为false,那么我如何在do\u something()中实现它呢?我想您可以将事件作为参数传递给函数并在那里进行检查。上面给出的解决方案正在运行,但可能存在一些线程问题。那么,你能推荐其他链接吗。或者其他任何例子。不,对不起,这对我来说一直都很有效。什么样的线程问题?我正在将对象移动到那里,但有时按钮单击在那里不起作用。它一动不动。恐怕除非我看到你的解决方案,否则我无法发表评论。我觉得我已经回答了你的问题——也许其他人可以帮忙,或者你可以针对这个新问题提出一个新问题。是的。谢谢你的回答。我将它标记为accept,因为它在dat prob上工作。给你加油。