我正在嘗試實作一個界面,EditText當用戶在其上鍵入單個字符時,該界面將偵聽我的內容,這樣當發生這種情況時,我會收到一條 Toast 訊息,You tried to type a new character當用戶清除該訊息時,該界面將檢查其中的字符長度EditText并顯示Toast 訊息,如果count0則清除所有文本。這就是Android.Text.IWatcher介面的用武之地。我已經在我的主類中像這樣實作了它......
public class MainActivity : AppCompatActivity,ITextWatcher
{
//after I implemented the interface then these methods were generated by the compiler
public void OnTextChanged(Java.Lang.ICharSequence s, int start, int before, int count)
{
//check the length of characters typed and show a Toast
if (s.Length() > 0)
{
Toast.MakeText(this, "You are typing more text", ToastLength.Long).Show();
}
//if user clears all text also show a Toast
if (s.Length() == 0)
{
Toast.MakeText(this, "You have cleared all the text", ToastLength.Long).Show();
}
}
}
我將介面分配給EditText下面的我喜歡的。
EditText user_message = chat_view.FindViewById<EditText>(Resource.Id.message_box);
//assign a text watcher to the EditText
user_message.AddTextChangedListener(this);
問題是當我在我的 android 設備上除錯這個應用程式時,當我輸入我的 EditText 時,我沒有得到 Toast,請幫助我解決這個問題,謝謝。
uj5u.com熱心網友回復:
為什么不直接使用公開的 C# 事件EditText呢?
user_message.TextChanged = OnTextChanged;
然后實作方法:
private void OnTextChanged(object sender, TextChangedEventArgs e)
{
if (e.Text.Count() > 0)
{
// do stuff
}
}
uj5u.com熱心網友回復:
創建一個 TextWatcher 類,然后將此偵聽器添加到 EditText。
public class TextWatcher : Java.Lang.Object, ITextWatcher
{
public void AfterTextChanged(IEditable s)
{
}
public void BeforeTextChanged(ICharSequence s, int start, int count, int after)
{
}
public void OnTextChanged(ICharSequence s, int start, int before, int count)
{
Console.WriteLine("---------------------------" s);
}
}
用法:
SetContentView(Resource.Layout.layout4);
var editText = FindViewById<EditText>(Resource.Id.editText1);
editText.AddTextChangedListener(new TextWatcher());
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/373471.html
