当用户使用软键盘点击完成时,我试图抓住。以下代码不起作用,但几乎相同的代码正在另一页上工作。这段代码有什么问题?调试器显示它从不调用侦听器。它也没有调用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();
});
}
答案 0 :(得分:0)
尝试使用如下所述:
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;
}
});