Отображение клавиатуры - PullRequest
0 голосов
/ 09 марта 2011

У меня есть 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 я все еще в растерянности.

Спасибо, MD.

1 Ответ

0 голосов
/ 10 марта 2011
    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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...