0

我有 2 个 EditText 字段,我想在第一个验证成功后立即显示第二个键盘(我不希望用户点击第二个字段)。我已经尝试过这里的响应,但是我只能在验证失败并且用户在错误弹出窗口上点击 OK 时才能使其工作:

private void showMSG( String str, final EditText txtField ) {
        
        // build pop up box with error message
        AlertDialog.Builder builder = new AlertDialog.Builder( this );
        builder.setMessage( str )
                .setTitle( "Input Error" )
                .setCancelable( false )
                .setNeutralButton("OK", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) { 
                        dialog.dismiss();
                        showKeyPad( txtField );
                        //((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(txtField, 0);
                    }
                });
        
        
        AlertDialog message = builder.create();
        message.show();
    } // END showMSG() -----

如果验证通过并且第二个字段仍需要输入,则键盘不会显示:

if ( this.frameSizeLength() == 0 ) {
                    this.txtFrameSize.requestFocus();
                    // TO DO:  display keyboard
                    this.showKeyPad( this.txtFrameSize );
}

我创建了一种显示键盘的方法,知道我需要在不止一种情况下显示键盘:

private void showKeyPad( View v ) {
        ( (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE) ).showSoftInput(v, 0);
    } // END showKeyPad() -----

发送到 showKeyPad() 的所有内容都是一个 EditText,在阅读了 Android 文档后,我仍然不知所措。

谢谢,医学博士。

4

1 回答 1

0
    InputMethodManager imm = (InputMethodManager) Main.mainClassInstance
.getSystemService(Main.mainClassInstance.INPUT_METHOD_SERVICE);

   imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

或者

public void showKeyboard(View v) {
    InputMethodManager imm = (InputMethodManager) Main.mainClassInstance
            .getSystemService(Main.mainClassInstance.INPUT_METHOD_SERVICE);
    imm.showSoftInput(v, imm.SHOW_IMPLICIT);
}
于 2011-03-09T21:08:40.253 回答