我正在尝试捕捉用户何时使用软键盘点击完成。下面的代码不起作用,但几乎相同的代码在另一个页面上起作用。这段代码有什么问题?调试器显示它从不调用侦听器。它也没有调用login函数。
我尝试添加选项来查看文件,甚至自定义一个。
//view
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_password"
android:inputType="textPassword"
android:maxLines="1"/>
//java, onCreateView (b is data binding)
b.password.setImeOptions(EditorInfo.IME_ACTION_DONE);
RxTextView.editorActionEvents(b.password)
.subscribe(a -> {
login();
});
//or old way is not working too
b.password.setOnEditorActionListener((v, actionId, event) -> {
login();
return false;
});更新:当我将语句移动到另一个函数时,它可以工作。
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
RxTextView.editorActionEvents(b.password)
.subscribe(a->{
login();
});
}发布于 2017-08-03 02:52:10
试着像中提到的那样使用:
Android Use Done button on Keyboard to click button
b.password.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if ((event != null && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) || (actionId == EditorInfo.IME_ACTION_DONE)) {
Log.i(TAG,"Enter pressed");
}
return false;
}
});https://stackoverflow.com/questions/45468463
复制相似问题