2017-08-02 90 views
0

我试图捕捉当用户点击完成使用软键盘。以下代码无法正常工作,但几乎相同的代码正在另一个页面上工作。这段代码有什么问题?调试器显示它从不调用监听器。它也不会调用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

尝试使用这个像中提到:

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; 
     } 
    }); 
+0

感谢您的回答,但没有奏效。 – MmtBkn