OnTouchListener怪异的bug

时间:2011-10-15 09:33:36

标签: android ontouchlistener

当我使用OnTouchListener时,它只有在我添加一个命令可以执行以下操作时才有效:

  

tv.setText( “”);

例如:

  drawView.setOnTouchListener(new View.OnTouchListener() {
             @Override
             public boolean onTouch(View v, MotionEvent ev) {
                tv.setText("");
                int x = ev.getX();

                return true;
            }
         });

如果您要删除显示tv.setText("");的行,它将无效..有任何想法吗?

1 个答案:

答案 0 :(得分:0)

如果程序流在onTouch中输入,则将执行整个方法。这是流程将继续执行语句,直到它到达方法的结束括号或它找到一个return语句(在这种情况下,你必须返回true / false)。除非你有一些产生异常的错误,否则正常的流程会被破坏并抛出异常。

   public boolean onTouch(View v, MotionEvent ev) {
                tv.setText("");
                int x = ev.getX();

                return true;
            }

我想说的是,如果是tv.setText(“”);然后执行int x = ev.getX();也被执行。

这是为了实现你的问题而小麻烦,但我认为你想从代码中的其他人那里读取x变量,并且你还定义了全局x变量,所以你期望x变量改变它的值。好吧,它不会导致在onTouch中创建另一个具有相同名称x的var,并且您更改本地var的值而不是全局值。你可以用它来检查 Log.v(“local var”,“x =”+ x);