这个问题应该相当简单(我认为),但我不知道如何正确地做到这一点。我对编程还很陌生。this.Touch - 事件触发多次,不知道如何取消订阅
我有一个简单的类继承自EditText。有两个问题:
- 最初,Touch事件触发3次,第二次触摸会触发事件5次,依此类推。这里发生了什么?
- 我不知道如何取消订阅活动,或者在什么阶段。通常,在处理活动时,我只需在OnResume中进行订阅并在OnPause期间取消订阅。在这种情况下什么是正确的解决方案?我应该编写一个自定义方法并从父类调用它吗?我应该实施IDisposable还是类似的?我应该以不同的方式写课程吗?
这是我的自定义编辑文本演示类:
namespace HelloWorld_Android {
class DemoEditText : EditText {
public DemoEditText (Context context, IAttributeSet attrs) : base(context, attrs) {
this.Touch += HandleTouch;
}
void HandleTouch (object sender, TouchEventArgs e) {
Console.WriteLine ("Fired");
}
}
}
活动:
namespace HelloWorld_Android {
[Activity (Label = "HelloWorld_Android", MainLauncher = true)]
public class MainActivity : Activity {
protected override void OnCreate (Bundle bundle) {
base.OnCreate (bundle);
SetContentView(Resource.Layout.Main);
}
}
}
我的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<HelloWorld_Android.DemoEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/test"
/>
</LinearLayout>
所以,我没有在这个项目上工作一段时间,并在两者之间安装了几个xamarin.android更新。今天,我又一次启动了这个项目,没有改变代码,触摸事件只触发两次(像你提到的那样),并且每次触摸都不会触发越来越多的事件。我不确定,但我认为这个问题是由于xamarin.android中已经修复的触摸事件引起的。 –