方法调用后,Android Progress对话框不会被忽略

时间:2014-04-09 14:28:19

标签: java android android-asynctask progressdialog

我在这里写信给你一个关于进度对话的小问题。

事实上,我在我的应用程序中调用Web服务,进度对话框运行良好。

但是当我更改对象的日期以进行我的Web服务调用时, 出现进度对话框,结果为receiveid。并且自动,有一个新的Web服务调用,进度对话框没有消失: - /

在我的服务器JBoss上,我可以看到来自我的应用程序的调用。 在我的活动的第一次创建时,我有一个电话。

但是在第二次通话时,当我更改日期时,有两个电话。我不知道为什么,因为当我改变我的一个微调器时它的工作正常,Web服务就是调用并返回结果。

我在asynctask中调用Web服务。我对asynctask中的进度对话框一无所知。

以下是我调用进度对话框的方法

public void callWebService()
{
    myProgressDialog = ProgressDialog.show(OverviewMoney.this,"", "Récupération liste des positions cash",true); 


       final Runnable runInUIThread = new Runnable() {
            public void run() {
             setListView();                
            }
          };

          new Thread() {
                @Override public void run() 
                {
                  loadListMoney();
                  myProgressDialog.dismiss();
                  uiThreadCallback.post(runInUIThread);                     
                  myProgressDialog= null;
                }
              }.start();
}

方法loadListMoney在asynctask中调用我的Web服务,方法setListView将我的resultList放在适配器中以在列表视图上打印列表。 在此先感谢:-)(对不起我的英语)

1 个答案:

答案 0 :(得分:0)

试试这个

public void callWebService()
{
    if (myProgressDialog != null) myProgressDialog.dismiss();
    myProgressDialog = ProgressDialog.show(OverviewMoney.this,"", "Récupération liste des positions cash",true); 


       final Runnable runInUIThread = new Runnable() {
            public void run() {
             setListView();                
            }
          };

          new Thread() {
                @Override public void run() 
                {
                  loadListMoney();
                  myProgressDialog.dismiss();
                  uiThreadCallback.post(runInUIThread);                     
                  myProgressDialog= null;
                }
              }.start();
}

根据我的理解,当第一次调用此函数两次时,它将启动进度对话框并快速进行另一个函数调用,因此不会忽略之前的进度对话框,而是创建了另一个进度对话框。这就是它的主要原因。