首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获IME操作

捕获IME操作
EN

Stack Overflow用户
提问于 2017-08-03 02:30:56
回答 1查看 448关注 0票数 0

我正在尝试捕捉用户何时使用软键盘点击完成。下面的代码不起作用,但几乎相同的代码在另一个页面上起作用。这段代码有什么问题?调试器显示它从不调用侦听器。它也没有调用login函数。

我尝试添加选项来查看文件,甚至自定义一个。

代码语言:javascript
复制
//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;
    });

更新:当我将语句移动到另一个函数时,它可以工作。

代码语言:javascript
复制
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    RxTextView.editorActionEvents(b.password)
            .subscribe(a->{
                login();
            });

}
EN

回答 1

Stack Overflow用户

发布于 2017-08-03 02:52:10

试着像中提到的那样使用:

Android Use Done button on Keyboard to click button

代码语言:javascript
复制
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;
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45468463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档