【问题标题】:I want to display toast message after click on enter key on virtual keyboard单击虚拟键盘上的输入键后,我想显示 toast 消息
【发布时间】:2013-12-23 16:02:20
【问题描述】:

请在下面找到更新后的代码。

以下是代码:

package com.Wase.edittext;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.widget.EditText;
import android.widget.Toast;
import com.Wase.edittext.R;
import android.widget.TextView;

public class MyAndroidAppActivity extends Activity {

 private EditText edittext;
 private EditText edittext1;

 @Override
 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_android_app);

    addKeyListener();
 edittext.requestFocus();
}



 public void addKeyListener() {

    // get edittext component
    edittext = (EditText) findViewById(R.id.editText);
    edittext1 = (EditText) findViewById(R.id.editText1);



    // add a keylistener to keep track user input
    edittext.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int keyCode, KeyEvent event) {

    // if keydown and "enter" is pressed
    if ((event.getAction() == KeyEvent.ACTION_DOWN)
        && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER))
    {
        edittext1.requestFocus();
    }

    edittext1.setOnEditorActionListener(new TextView.OnEditorActionListener() {
         @Override
         public boolean onEditorAction(TextView a, int b, KeyEvent c) {

    // if keydown and "enter" is pressed
    if ((c.getAction() == KeyEvent.ACTION_DOWN)
        && (c.getKeyCode() == KeyEvent.KEYCODE_ENTER)) {

        //hide the keyboard
        InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
                imm.hideSoftInputFromWindow(edittext1.getWindowToken(), 0);
    // display a floating message
        Toast.makeText(MyAndroidAppActivity.this,
            edittext.getText() + " " + edittext1.getText(), Toast.LENGTH_SHORT).show();
        return true;
    }

        return false;
}
 });
        return false;
}
    });
 }
}

此代码仅适用于键盘单击或系统键盘单击。我想隐藏虚拟键盘并在点击 android 虚拟键盘的 enter 键时显示 toast 消息。

请帮帮我。

【问题讨论】:

    标签: android android-virtual-keyboard


    【解决方案1】:

    每次在 edittext 中按下一个键时,您都在为 edittext1 设置一个新的 onKeyListener...这实际上是您想要做的吗?

    您必须检测何时按下回车键的代码看起来不错。您需要添加以下代码来关闭键盘并敬酒。

    editText.setOnEditorActionListener(new TextView.OnEditorActionListener(){
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    
                if ((event.getAction() == KeyEvent.ACTION_DOWN)
                    && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER))
                {
                    InputMethodManager imm = (InputMethodManager)getSystemService(
                        Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
                    Toast.makeText(MyAndroidAppActivity.this, "My message", Toast.LENGTH_SHORT).show();
                }
           }
    }
    

    【讨论】:

    • 我同意评论,但这里的主要问题是吐司只显示点击物理键盘而不是通过安卓虚拟键盘。
    • 尝试使用editText.setOnEditorActionListener(new OnEditorActionListener() 等代替你的onKeyListener
    • 我在修改后写了这样的代码。在 OnEditorActionListener() 和 public boolean onKey(View v, int keyCode, KeyEvent event) 上给出了问题.. 如何解决3这个.. 代码如下跟随
    • onKey 不是 OnEditorActionListener() 中的方法,我将更改答案以显示更多代码
    • editText.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { // 如果 keydown 和“enter”被按下 if ((event.getAction( ) == KeyEvent.ACTION_DOWN) && (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)) { edittext1.requestFocus(); }
    猜你喜欢
    • 1970-01-01
    • 2012-07-21
    • 2020-10-09
    • 2017-07-16
    • 2016-06-20
    • 1970-01-01
    • 2014-02-09
    • 2014-07-03
    • 2015-01-02
    相关资源
    最近更新 更多