Android进程对话框的问题



在我的应用程序中,我试图从服务器获取数据并存储在数据库中。当它正在做所有这些工作时,我想在那个时候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有任何问题,那么它会显示一些消息,然后成功显示另一个消息。

我应该在哪里写代码?给我一些建议。

谢谢

不完全回答您的特定问题,但您考虑过AsyncTask吗?它的设计主要是为了处理像您这样的情况,其中任务是异步执行的,同时在UI线程上显示一些进度(和最终结果)。或者,你可以广播一个意图,让你的activity捕捉它来显示toast,因为你的toast也应该从你的UI线程显示。

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

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