我是Android新手。我正在尝试创建一个文本框,并在按下完成键时,它应该取值为java代码。为此,我使用setOnEditorActionListener ..我搜索了如何做到这一点,并获得了许多关于如何实现它的答案。例如:
EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
sendMessage();
handled = true;
}
return handled;
}
});
我需要问我应该在哪里写这个东西?在哪种方法?我尝试在onCreate中执行此操作,但它引发了一些错误。我以某种方式使用此代码使其工作:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.unlock);
Log.i(TAG, "onCreate");
editText= (EditText) findViewById(R.id.editText);
editText.setOnEditorActionListener(this);
}
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
Log.i(TAG, "button pressed");
Toast.makeText(this, "Hey you just clicked the DONE button", Toast.LENGTH_SHORT).show();
handled = true;
}
return handled;
}
我在这里使用了这个关键字,但我不明白为什么要使用它。 问题1.请帮助我理解,为什么我们使用了这个关键字..
问题2.为什么它不能在下面的代码中工作?
public void checkInput() {
Log.i(TAG, "Enter checkInput method");
final EditText editText= (EditText) findViewById(R.id.editText);
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.i(TAG, "Enter onEditorAction");
boolean handled = false;
if (actionId == EditorInfo.IME_ACTION_SEND) {
Log.i(TAG, "button pressed")
handled = true;
}
return handled;
}
});
}
我从onCreate调用了这个checkInput方法。
答案 0 :(得分:1)
回答问题1:
我在这里使用了这个关键字,但我不明白为什么要使用它。问题1.请帮助我理解,为什么我们使用了这个关键字..
您要告诉Java查看Activity类以了解TextView.OnEditorActionListener
接口所需方法的实现。因此,对于与软键盘的所有交互,Java会在您的类中查找该方法:onEditorAction
为了使上述工作正常,您的活动需要定义如下:
public class MyActivity implements TextView.OnEditorActionListener {}
问题2:
问题2.为什么它不能在下面的代码中工作?
检查"完成"行动,您的if
声明应为:
if (actionId == EditorInfo.IME_ACTION_DONE) { ... }
希望有所帮助。