Java 如何调用onTouch()方法
我想调用Java 如何调用onTouch()方法,java,android,Java,Android,我想调用onTouch()方法,该方法与我想从中调用的方法OnOptions ItemSelected()属于不同的类,下面是代码: public boolean onTouch(View v, MotionEvent event) { float downx = 0, downy = 0, upx = 0, upy = 0; int action = event.getAction(); switch (action)
onTouch()
方法,该方法与我想从中调用的方法OnOptions ItemSelected()
属于不同的类,下面是代码:
public boolean onTouch(View v, MotionEvent event) {
float downx = 0, downy = 0, upx = 0, upy = 0;
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
downx = event.getX();
downy = event.getY();
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
upx = event.getX();
upy = event.getY();
mCanvas.drawLine(downx, downy, upx, upy, mPaint);
invalidate();
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;
}
return true;
}
我想从以下位置调用onTouch()
的方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.LINE_ID:
//i want to call it here
return true;
OnOptions ItemSelected()
位于MainClass
中,但onTouch()
位于MainClass
的子类中
我怎么能做到?如何调用drawLine()
更新:
我试过:
View v = null; MotionEvent event = null;
MyView sub_class = new MyView(getBaseContext());
sub_class.onTouch(v, event);
但它崩溃了!
请帮忙!我认为这对一些人来说很容易。。他们不在乎:(你真的根本不应该调用
onTouch()
。这是Android系统在发生触摸事件时生成的,而不是你应该手动调用的。如果没有其他事情,你如何计算出传递它的MotionEvent
你需要做的是调用你的
onTouch()
方法在触摸事件发生时调用的任何方法。重构你的onTouch()
,以便它调用一个带有适当参数的方法,该方法在触摸事件发生时表现正常;然后选择你的onoptionItemSelected()
也可以调用该方法。尽管您不应该调用由操作系统本身调用的Android View内部方法。
但是,您仍然可以通过在子类上创建一个实例并通过该对象调用onTouch方法来实现这一点。
检查以下代码:
SubClass sub_class = new SubClass();
sub_class.onTouch(v, event);
我有两个touch listener,如何触发一个特定的呢?@New2Android这正是问题所在!你应该看看
onTouch()
方法在触摸输入时做了什么;然后你应该这样做。你根本不应该触发touch listener。它是由系统触发的。我如何调用drawline()那么?你能提出一个解决方案吗?@New2Android如果不看你所有的代码,不了解你想要实现的目标,你就不可能提出一个好的解决方案。但我真的认为你最好的策略是找到一些安卓教程并仔细阅读它们,否则你就有编写你不理解的代码的危险我的代码是:MyView sub_class=newmyview(getBaseContext());sub_class.onTouch(v,event);我在sub_class.onTouch(v,event)上有一个错误;如何解决它?您在传递的事件中设置了任何操作吗?我看到第三行查找操作:“event.getAction()”,这是该错误的原因。如果调用该方法正确,请接受答案!我肯定会接受它,请帮助我处理事件错误