mikebag123 2022-03-06 01:37 采纳率: 50%
浏览 34

在onClick中调用AlertLog无效

问题遇到的现象和发生背景

写了一个利用ProgressDialogUtil.showProgressDialog(MainActivity.this)以及ProgressDialogUtil.dismiss();可以显示及隐藏ProgressDialog的方法,希望可以在运算时跳出等待界面,但是我实际使用时程序会直接运算并显示结果,在等待时并不会跳出AlertDialog,请问是什么原因

问题相关代码,请勿粘贴截图

此为MainActivity中调用的方法的地方(trans为OnClick事件)

    public void trans(View view) {
        ProgressDialogUtil.showProgressDialog(MainActivity.this);
        
        if (!clicked) {
            ProgressDialogUtil.showProgressDialog(MainActivity.this);
            imageView.setImageBitmap(bitmap1);
            clicked = !clicked;
        } else {
            imageView.setImageBitmap(bitmap);
            clicked = !clicked;
        }

        generator(bitmap1);

        for (int j = 0; j < Gcodes.size()-1; j++){
            t+=Gcodes.get(j)+"\n";
        }

        txv1.setText(t);
        ProgressDialogUtil.dismiss();
    }

此为被调用之方法

public class ProgressDialogUtil {
    private static AlertDialog mAlertDialog;

    /**
     * 彈出耗時對話方塊
     * @param context
     */
    public static void showProgressDialog(Context context) {
        if (mAlertDialog == null) {
            mAlertDialog = new AlertDialog.Builder(context, R.style.CustomProgressDialog).create();
        }

        View loadView = LayoutInflater.from(context).inflate(R.layout.custom_progress_dialog_view, null);
        mAlertDialog.setView(loadView, 0, 0, 0, 0);
        mAlertDialog.setCanceledOnTouchOutside(false);

        TextView tvTip = loadView.findViewById(R.id.tvTip);
        tvTip.setText("載入中...");

        mAlertDialog.show();
    }

    public static void showProgressDialog(Context context, String tip) {
        if (TextUtils.isEmpty(tip)) {
            tip = "載入中...";
        }

        if (mAlertDialog == null) {
            mAlertDialog = new AlertDialog.Builder(context, R.style.CustomProgressDialog).create();
        }

        View loadView = LayoutInflater.from(context).inflate(R.layout.custom_progress_dialog_view, null);
        mAlertDialog.setView(loadView, 0, 0, 0, 0);
        mAlertDialog.setCanceledOnTouchOutside(false);

        TextView tvTip = loadView.findViewById(R.id.tvTip);
        tvTip.setText(tip);

        mAlertDialog.show();
    }

    /**
     * 隱藏耗時對話方塊
     */
    public static void dismiss() {
        if (mAlertDialog != null && mAlertDialog.isShowing()) {
            mAlertDialog.dismiss();
        }
    }
}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

在运算前跳出等待框,运算结束后隐藏

  • 写回答

2条回答 默认 最新

  • I'm an Android Dev 2022-03-06 17:43
    关注

    是不是运算太快,提示直接消失了,可以在dismiss前加个延时

    Thread.sleep(1000)
    ProgressDialogUtil.dismiss();

    评论

报告相同问题?

问题事件

  • 修改了问题 3月6日
  • 修改了问题 3月6日
  • 创建了问题 3月6日

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探