当我使用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("");
的行,它将无效..有任何想法吗?
答案 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);