捕捉IME行动

时间:2017-08-02 18:30:56

标签: android android-softkeyboard ime

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

}

1 个答案:

答案 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;
        }
    });