进度对话框的android问题

时间:2011-09-10 06:37:25

标签: android progressdialog

在我的应用程序中,我试图从服务器获取数据并存储在数据库中。 当它正在进行所有这些工作时我想要进行progressdialog应该显示,如果成功获取数据,那么对话框应该关闭,并且一些alertDialog应该显示msg“成功获取数据”。如果那里有任何n / w问题,那么它应该显示不同的msg“n / w问题”。

我正在做的事情如下,

public void onClick(View arg0) {
                myProgressDialog = ProgressDialog.show(
                        getParent(), "Please wait...",
                        "Doing upgrade...", true);
                new Thread() {
                    public void run() {
                        try {

                        upgradeAll();//function where data fetched from server

                            sleep(5000);

                        } catch (Exception e) {
                        }
                        // Dismiss the Dialog

                        myProgressDialog.dismiss();


                        Toast.makeText(UpgradeAllTableData.this, "Due to some internal problem \n" +
                                "it couldnot update..", Toast.LENGTH_LONG).show();
                    }

                }.start();
            }

AsyncTask代码,

private class UpgradeTask extends AsyncTask<Context, Void, Void> {
        private ProgressDialog Dialog = new ProgressDialog(UpgradeAllTableData.this);

        @Override
        protected void onPreExecute() {
            System.out.println("In onPreExecute ");
            Dialog.setTitle("Loading");
            Dialog.setMessage("Please wait for few seconds...");
            Dialog.show();
        }

        @Override
        protected Void doInBackground(Context... params) {
            System.out.println("In doInBackground ");

            upgradeAll();

            System.out.println("In doInBackground after fetching");
            return null;
        }

        @Override
          protected void onPostExecute(Void unused) {

            System.out.println("In onPostExecute ");
            Dialog.dismiss();

            Toast.makeText(UpgradeAllTableData.this, "Problem with internet" ,  Toast.LENGTH_SHORT).show();
            alertboxNeutral("Warning", "Problem with Internet Connection", "Okay","Try again");

        }
    }

问题是Toast没有显示。为什么呢?

我的问题是哪个条件以及在哪里给出,以便如果有任何问题n / w然后它显示一些msg和成功然后显示另一个消息。

我应该为此编写代码? 给我一些建议。

谢谢

2 个答案:

答案 0 :(得分:1)

不完全是您特定问题的答案,但您是否考虑过AsyncTask?它几乎被设计用于处理像你这样的情况,其中任务执行异步,同时在UI线程上显示一些进度(和最终结果)。或者,您可以广播一个意图并让您的活动捕获它以显示吐司,因为您的Toast也应该从您的UI线程中显示。

更新: AsyncTask参考 - http://developer.android.com/reference/android/os/AsyncTask.html

答案 1 :(得分:1)

你在做什么是完全错误的。 UI线程处理所有UI更改,但是在这里你在UI线程中创建ProgressDialog并在其他一些线程中解除它。解决方案是使用AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html