【发布时间】:2021-11-27 23:53:42
【问题描述】:
根据answer,我想显示 dilaog,直到加载接下来的 10 个帖子,所以我创建了静态 alertDialog 方法以在我的应用程序的不同位置使用它,但问题是对话框不会取消或关闭
setProgressDialog 在 Utils 类中
public static AlertDialog setProgressDialog(Context context) {
int llPadding = 30;
LinearLayout ll = new LinearLayout(context);
ll.setOrientation(LinearLayout.HORIZONTAL);
ll.setPadding(llPadding, llPadding, llPadding, llPadding);
ll.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams llParam = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
llParam.gravity = Gravity.CENTER;
ll.setLayoutParams(llParam);
ProgressBar progressBar = new ProgressBar(context);
progressBar.setIndeterminate(true);
progressBar.setPadding(0, 0, llPadding, 0);
progressBar.setLayoutParams(llParam);
llParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
llParam.gravity = Gravity.CENTER;
TextView tvText = new TextView(context);
tvText.setText("Loading ...");
tvText.setTextColor(context.getResources().getColor(R.color.black));
tvText.setTextSize(20);
tvText.setLayoutParams(llParam);
ll.addView(progressBar);
ll.addView(tvText);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCancelable(false);
builder.setView(ll);
AlertDialog dialog = builder.create();
dialog.show();
Window window = dialog.getWindow();
if (window != null) {
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
layoutParams.copyFrom(dialog.getWindow().getAttributes());
layoutParams.width = LinearLayout.LayoutParams.WRAP_CONTENT;
layoutParams.height = LinearLayout.LayoutParams.WRAP_CONTENT;
dialog.getWindow().setAttributes(layoutParams);
}
return dialog;
}
然后我在 HomeFragment 点击加载更多按钮时使用它
binding.loadMoreBtn.setOnClickListener(view -> {
Utils.setProgressDialog(requireContext());
if (Utils.hasNetworkAccess(requireContext())) {
postViewModel.getPosts();
// Log.w(TAG, "loadMoreBtn: "+dialog.isShowing() );
} else {
postViewModel.getAllItemsFromDataBase.getValue();
}
Utils.setProgressDialog(requireContext()).cancel();
Utils.setProgressDialog(requireContext()).dismiss();
});
PS:我也尝试创建对话框AlertDialog dialog = Utils.setProgressDialog(requireContext());,而不是直接调用该方法然后dialod.show(),并在getPosts 之后取消或关闭它但它不会出现
【问题讨论】:
标签: java android android-alertdialog android-progressbar android-dialog