如何抢占ProgressDialog?

时间:2011-09-29 13:40:50

标签: android

应用程序我正在构建正在执行的任务,ProgressDialog在屏幕上盘旋'并且'回合。

如何在任何给定时间为用户提供突破该对话框的能力,立即消失对话框并阻止任务在中期执行?

2 个答案:

答案 0 :(得分:0)

试试这个,如果它是AsyncTask:

dialog = ProgressDialog.show(
                        Activity.this,
                        "",
                        "Loading the results...Please wait.",
                        true,
                        true,
                        new DialogInterface.OnCancelListener(){
                            @Override
                            public void onCancel(DialogInterface dialog) {
                                *YourTask*.this.cancel(true); 
                            }
                        }
                );

答案 1 :(得分:0)

我无法弄清楚要放入nibha发布的 YourTask 占位符。 (我已经尝试了nibha在同一地点的剪辑,Lalit Poptani的短剪辑成功地只消失了对话框消息。)无论如何,以下是该类(为了简单起见,删除了声明和其他内容以传达问题)。它在屏幕上绘制了一些东西。我只是希望例程在消息对话框消失的同时立即停止。 (再次感谢您的帮助):

public class WhateverActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mWhatView = new WhateverView(this);
        setContentView(mWhatView);
        whatever = new Whatever();
        whatever.addListener(mWhatView);
        whatever.execute(this);
        mDialog = ProgressDialog.show( 
                WhateverActivity.this, 
                "", 
                "Loading the results...Please wait.", 
                true, 
                true, 
                new DialogInterface.OnCancelListener(){ 
                    @Override 
                    public void onCancel(DialogInterface dialog) { 
                        *YourTask*.this.cancel(true);  
                    } 
                } 
        );
    }

    private class WhateverView extends View implements WhateverListener {
        @Override
        public void whateverDone() {
        }

        @Override
        public void whateverPart(ArrayList<Float> list) {
            synchronized (this) {
                Iterator<Float> iter = list.iterator(); 
                    ...
                }
            }
        }

        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh) {
            ...
        }

        @Override
        protected void onDraw(Canvas canvas) {
            synchronized (this) {
                if (mBitmap != null) {                  
                    canvas.drawBitmap(mBitmap, 0, 0, null);
                }
            }
        }
    }
}