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();
在我的项目中,我使用一个简单的 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();