AlertDialog - правильный способ его создания. Теперь моргните и откройте - PullRequest
0 голосов
/ 25 мая 2020

В моем проекте я использую простой AlertDialog для ввода некоторой информации. Моя проблема в том, что когда я go открываю этот AlertDialog, у меня очень короткое время мерцает, что неверно. Я хотел бы знать, в чем я ошибаюсь, и, прежде всего, каков должен быть правильный способ его создания, потому что я не могу найти решение, если не изменение объектов. Но мне действительно понадобится AlertDialog

    private void insertNameManually(String hint, int mType) {
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getContext());
    LayoutInflater inflater = this.getLayoutInflater();
    View dialogView = inflater.inflate(R.layout.alert_dialog, null);
    EditText editText = dialogView.findViewById(R.id.editTextName);
    Button clearTextButton = dialogView.findViewById(R.id.clearText);
    Button confirmButton = dialogView.findViewById(R.id.confirmButton);
    dialogBuilder.setView(dialogView);
    dialogBuilder.setTitle(R.string.std_choose);
    confirmButton.setOnClickListener(v -> {

        name = editText.getText().toString();

        name = hint;
        new Handler().postDelayed(() -> {
            MyFragment.this.type = mType;
            Intent data = new Intent();
            data.putExtra("type", type);
            activity.setResult(Activity.RESULT_OK, data);
            activity.finish();
        }, 275);
    });

    editText.setText(hint);

    clearTextButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            editText.setText("");
        }
    });

    AlertDialog alertDialog = dialogBuilder.create();
    alertDialog.show();
}

1 Ответ

1 голос
/ 25 мая 2020

Решение: Вы можете попробовать, добавив флаг в диалоговое окно с предупреждениями, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;

Вы можете попробовать, переключившись на DialogFragment, чтобы устранить мерцание.

Совет: просто добавьте сюда, посмотрев на свой код, а не

  AlertDialog alertDialog = dialogBuilder.create();
  alertDialog.show();

Вы можете сделать это, создаст и покажет диалоговое окно с предупреждением.

dialogBuilder.show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...