2017-08-02 122 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