如何处理android键盘动作

时间:2016-03-11 22:18:35

标签: java android

我是Android新手。我正在尝试创建一个文本框,并在按下完成键时,它应该取值为java代码。为此,我使用setOnEditorActionListener ..我搜索了如何做到这一点,并获得了许多关于如何实现它的答案。例如:

EditText editText = (EditText) findViewById(R.id.search);
editText.setOnEditorActionListener(new OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_SEND) {
            sendMessage();
            handled = true;
        }
        return handled;
    }
});

我需要问我应该在哪里写这个东西?在哪种方法?我尝试在onCreate中执行此操作,但它引发了一些错误。我以某种方式使用此代码使其工作:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.unlock);
        Log.i(TAG, "onCreate");
        editText= (EditText) findViewById(R.id.editText);
        editText.setOnEditorActionListener(this);
    }


    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {

        boolean handled = false;
        if (actionId == EditorInfo.IME_ACTION_SEND) {
            Log.i(TAG, "button pressed");
            Toast.makeText(this, "Hey you just clicked the DONE button", Toast.LENGTH_SHORT).show();
            handled = true;
        }
        return handled;  
      }

我在这里使用了这个关键字,但我不明白为什么要使用它。 问题1.请帮助我理解,为什么我们使用了这个关键字..

问题2.为什么它不能在下面的代码中工作?

 public void checkInput() {
        Log.i(TAG, "Enter checkInput method");

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

        editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                Log.i(TAG, "Enter onEditorAction");
                boolean handled = false;
                if (actionId == EditorInfo.IME_ACTION_SEND) {
                    Log.i(TAG, "button pressed")
                    handled = true;
                }
                return handled;
            }
        });
    }

我从onCreate调用了这个checkInput方法。

1 个答案:

答案 0 :(得分:1)

回答问题1:

  

我在这里使用了这个关键字,但我不明白为什么要使用它。问题1.请帮助我理解,为什么我们使用了这个关键字..

您要告诉Java查看Activity类以了解TextView.OnEditorActionListener接口所需方法的实现。因此,对于与软键盘的所有交互,Java会在您的类中查找该方法:onEditorAction

为了使上述工作正常,您的活动需要定义如下:

public class MyActivity implements TextView.OnEditorActionListener {}

问题2:

  

问题2.为什么它不能在下面的代码中工作?

检查"完成"行动,您的if声明应为:

if (actionId == EditorInfo.IME_ACTION_DONE) { ... }

希望有所帮助。