Эта задача должна быть довольно простой (я думаю), но я не знаю, как это сделать правильно. Я все еще очень новичок в программировании.
У меня есть простой класс, который наследуется от EditText. Есть 2 проблемы:
- Изначально событие 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>