Кнопка Backspace & enter не работает в диалоге Alert - PullRequest
0 голосов
/ 12 мая 2018

Когда я пытаюсь стереть или ввести в текст для редактирования внутри alerttdialog, это не работает, что не так с моим кодом?пожалуйста, помогите мне исправить эту проблему .. вот мой код для alerttdialog:

private void showFormBioData(){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    View dialogView = getLayoutInflater().inflate(R.layout.activity_bio_data,null);
    builder.setView(dialogView);
    builder.setCancelable(false);
    Button submit = dialogView.findViewById(R.id.btnSubmit);
    final TextView userName = dialogView.findViewById(R.id.bioName);
    final TextView shopName = dialogView.findViewById(R.id.bioToko);
    final TextView address = dialogView.findViewById(R.id.bioAlamat);
    final TextView email = dialogView.findViewById(R.id.bioEmail);
    final TextView telp = dialogView.findViewById(R.id.bioNope);

    final AlertDialog dialog = builder.create();
    dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK){
                dialog.dismiss();
                finish();
            }
            return true;
        }
    });
    dialog.show();

    submit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

                pdSubmit.show();
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(MainActivity.this, "Upload to firebase", Toast.LENGTH_SHORT).show();
                     pdSubmit.dismiss();

                }
            },2000);
        }
    });
}

1 Ответ

0 голосов
/ 12 мая 2018

Проблема в вашем keylistener, вы вернули true, что означает, что вы использовали ключевое событие. И андроиду плевать на это дальше.

  dialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
                @Override
                public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                    if (keyCode == KeyEvent.KEYCODE_BACK){
                        dialog.dismiss();
                        finish();
                    }
                    return false; // < change this 
                }
            });

Вы можете прочитать об этом в doc (ctrl + Q в Android Studio или ссылка )

  /**
     * Interface definition for a callback to be invoked when a key event is
     * dispatched to this dialog. The callback will be invoked before the key
     * event is given to the dialog.
     */
    interface OnKeyListener {
        /**
         * Called when a key is dispatched to a dialog. This allows listeners to
         * get a chance to respond before the dialog.
         *
         * @param dialog the dialog the key has been dispatched to
         * @param keyCode the code for the physical key that was pressed
         * @param event the KeyEvent object containing full information about
         *              the event
         * @return {@code true} if the listener has consumed the event,
         *         {@code false} otherwise
         */
        boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event);
    }
...