AlertDialog - 构建它的正确方法。现在闪烁并轻弹打开

AlertDialog - proper way to build it. Now blink and flick opening

在我的项目中,我使用一个简单的 AlertDialog 来输入一些信息。 我的问题是,当我去打开这个 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();
}

解决方案:您可以尝试在警报对话框中添加标志,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;

您可以尝试切换到 DialogFragment 可以帮助消除闪烁。

提示: 只想通过查看您的代码而不是

添加到此处
  AlertDialog alertDialog = dialogBuilder.create();
  alertDialog.show();

您可以这样做,将创建并显示警报对话框。

dialogBuilder.show();