如何更改键盘按钮“Go”功能

时间:2015-11-25 17:14:07

标签: android android-alertdialog keyboard-events

我的应用以用户登录开始。

当用户按下“Enter”按钮时(在网格视图上标记自己从sqlite获取数据之后)。该应用程序由inflater打开alertdialog。

    if (gridView.isClickable()){

        Toast.makeText(getApplicationContext(), "Waiter selected", Toast.LENGTH_LONG).show();

        LayoutInflater inflater = getLayoutInflater();
        View dialogLayout = inflater.inflate(R.layout.password_dialog, null);

        AlertDialog.Builder passwordDialog = new AlertDialog.Builder(MainActivity.this);

XML文件(布局)只有一个editext,在这个用户需要填写的editext上

他自己的密码:

  

 passwordDialog.setTitle(getString(R.string.get_id_uniq));
        passwordDialog.setMessage(getString(R.string.enter_id));


 passwordDialog.setView(dialogLayout);

        passwordDialog.setPositiveButton(getString(R.string.next),
        new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                password = input.getText().toString();

现在问题是,当用户点击editext键盘打开时 然后他输入密码,当他完成并按下“开始”按钮 键盘,键盘关闭,但不够,因为现在他需要再次按下alertdialog按钮,然后应用程序将检查密码是否正确,并将他移动到下一个活动。

我试着用 -  android:imeOptions="actionNext"

还有“完成”,“开始”和“发送”,他们都没有帮助。

如何防止双击2个不同的按钮并从键盘按钮发送数据并跳过需要按对话框按钮?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

  1. 对话框更改为AlertDialog,而不是AlertDialog.Builder - 这将允许您关闭(关闭)对话框。
  2. 使用 setOnEditorActionListener 进行输入,而不是使用setPositiveButton
  3. 致电 dialog.dismiss();用户在键盘上单击完成后。
  4. 看起来应该是这样的:

    AlertDialog dialog = new AlertDialog.Builder(this).create();//note dialog's type
        dialog.setTitle("Let's check it");
        EditText input = new EditText(this);
        dialog.setView(input);//assume this is your input
        input.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if(actionId == EditorInfo.IME_ACTION_DONE){
                    //What to do when user clicked Done button
                    Log.i("user's password:", v.getText().toString());//v.getText().toString(); is what's user has entered
                    dialog.dismiss();//close Alert Dialog
                    return true;
                }
                return false;
            }
        });