我有一个EditText(称为Stock)。我向Stock添加了一个EditorAction。当我点击Stock时,编辑器被打开,一切正常。现在我想要相同的行为,但是从代码中的不同部分调用。我试图调用Stock.CallOnClick()但没有任何反应。我的印象是编辑器的打开是由OnClick()事件引起的。
模拟EditText点击的相同行为的正确调用是什么?
感谢。
答案 0 :(得分:1)
现在我想要相同的行为,但是从代码中的不同部分调用。我试图调用Stock.CallOnClick()但没有任何反应。
如果我正确理解invoked from a different part in the code
,您需要使用EditText.SetOnEditorActionListener(TextView.IOnEditorActionListener)
:
创建一个新类继承java.lang.object
和TextView.IOnEditorActionListener
并实现它:
public class MyAction : Java.Lang.Object, TextView.IOnEditorActionListener
{
public void Dispose()
{
this.Dispose();
}
public bool OnEditorAction(TextView v, [GeneratedEnum] ImeAction actionId, KeyEvent e)
{
//insert your codes here
return true;
}
}
然后,您可以将MyAction
的实例传递给SetOnEditorActionListener
:
etStock = FindViewById<EditText>(Resource.Id.etStock);
etStock.SetOnEditorActionListener(new MyAction());
答案 1 :(得分:0)
因此,您需要调用InputMethodManager并在editoraction事件中调用ShowSoftInput()和HideSoftInput()。
buttonStock.Click += delegate
{
stock.RequestFocus(); // this seems to be necessary
stock.SelectAll(); // this is convenient
var imm = ((InputMethodManager)GetSystemService(InputMethodService));
imm.ShowSoftInput(stock, ShowFlags.Forced);
};
股票是我的EditText。