Android:在软键上按下“完成”键时检测

时间:2013-01-23 22:02:14

标签: android onclick android-softkeyboard detect onclicklistener

我想检测何时按下“完成”软键,这样当它出现时,就会显示一个Toast消息。我看到这篇文章有关同一个问题here但是,我对如何实施解决方案感到困惑。

提供的解决方案是:

 editText = (EditText) findViewById(R.id.edit_text);

 editText.setOnEditorActionListener(new OnEditorActionListener() {
     @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            // toast message
        }
        return false;
    }
 });

我的问题是:

  1. 是editText,假设是在onCreate方法下定义的?
  2. 是整个代码,假设是在onCreate方法下?

4 个答案:

答案 0 :(得分:1)

简而言之,是的。除非您只想在某些条件下激活EditText,否则您可以将它放在EditText发挥作用的位置(如点击事件,可运行或网络通话后)归结为偏好。

答案 1 :(得分:1)

您可以将EditText放在任何您喜欢的地方。我倾向于将所有内容拆分为更小的方法,因为我认为它使代码更容易更改,但是将几乎所有内容都放在onCreate方法中是一种非常常见的做法,因为它使得代码更易于遵循不要在不同方法之间来回跳转。

答案 2 :(得分:0)

editText = (EditText) findViewById(R.id.edit_text);

必须在setContentView

之后拨打电话

在您的布局中设置编辑文本ImeOption 否则你永远不会接受完成的行动。

public ... extends Activity
{

public void onCreate(Bundle ...)
{
super...
setContentVIew...


editText = (EditText) findViewById(R.id.edit_text);

 editText.setOnEditorActionListener(new OnEditorActionListener() {
     @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_DONE) {
            // toast message
        }
        return false;
    }
 });

}
}

<EditText
            android:id="@+id/edittext1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:imeOptions="actionDone"
             >

答案 3 :(得分:0)

导入:

import android.view.View.OnKeyListener;

在关于特定编辑文本的键时尝试使用以下代码。

代码:

ed.setOnKeyListener(new OnKeyListener() {

@Override

public boolean onKey(View v, int keyCode, KeyEvent event) {

            // TODO Auto-generated method stubi

            Log.d("View", "conLL.getWidth() "+conLL.getWidth());

            if (event.getKeyCode()==66 && enteredNumber>0) {

            Log.d("View", "------------------------ ");

             } 
            return false;
        }
});