2011-04-01 112 views
3

在android应用程序中,当第二个活动从第一个活动被调用时,我想在两个活动之间放置进度条,以便应用程序看起来处于运行状态,并且我认为这样做已完成通过线程,帮助我,如果有人知道这一点..我想在两个活动之间添加进度条

在此先感谢。

+1

第二次活动,你究竟在做什么?更具描述性,这是一个发烧友程序员的网站,而不是“短信”呃,所以不要写短信的话,比如“ne1” – 2011-04-01 05:26:45

+0

Acctully我想在两个活动之间放置一个进度条,第一个活动数据从数据库在第二个活动中显示了选定数据的更多细节。主要是两件事之间的进度条,以便用户不觉得该应用程序已被绞死... – Bhavin2887 2011-04-01 06:00:11

+0

看到我的答案,它将完全适合您的要求。请通过答案并尝试实施它。 – 2011-04-01 06:52:52

回答

4

卡尔蒂克是正确的,但让我增加更多的显示进度的活动中。

由于您希望在后台显示进度条并获取数据,您应该在第二个活动中实现AsyncTask。

下面是一个例子:

private class performBackgroundTask extends AsyncTask <Void, Void, Void> 
     { 
       private ProgressDialog Dialog = new ProgressDialog(ClassName.this); 

       protected void onPreExecute() 
       { 
        Dialog.setMessage("Please wait..."); 
        Dialog.show(); 
       } 

       protected void onPostExecute(Void unused)  
       { 
        try 
        { 
         if(Dialog.isShowing()) 
         { 
          Dialog.dismiss(); 
         } 
           // do your Display and data setting operation here 
        } 
        catch(Exception e) 
        { 

        } 

      @Override 
     protected Void doInBackground(Void... params) 
      { 
      // Do your background data fetching here 
       return null; 
     } 
     } 

加入这个performBackgroundTask类之后,你需要调用​​为同一每当你想执行。

+0

这听起来很愚蠢,但因为我是android新手,感谢这个答案,我现在明白了AsyncTask!谢谢! – 2012-06-14 09:46:09

+0

@ValentinoRu很高兴我的回答对你有帮助。干杯....无论如何,这是超过一年前回答:) – 2012-06-14 09:47:12

1

在android中,只有主线程(也称为UI线程)才能进行UI操作。所以,你不能从新线程显示进度条。 我认为你的问题的解决方案可能会显示你的第二个活动(可能是空的),从onCreate()显示进度对话框,然后在活动中做任何繁重的工作。 希望这有助于。

1

只需在进行计算的活动中制作ProgressDialog即可。

ProgressDialog progressDialog = ProgressDialog.show(context, title, text); 

,当你的任务完成后关闭它

if(progressDialog != null && progressDialog.isShowing()) 
     progressDialog.dismiss(); 

但一定要表现出和罢免从UI线程对话。 AsyncTask可能是这种情况下的最佳溶剂

3

您必须使用AsyncTask或Thread来获取所选数据的详细信息。通过使用这个就可以解决你的两个活动之间显示进度的问题..

的AsyncTask基本的例子:AsyncTask

private class LongOperation extends AsyncTask<String, Void, String> { 

@Override 
protected String doInBackground(String... params) { 
    // perform long running operation operation 
    return null; 
} 

/* (non-Javadoc) 
* @see android.os.AsyncTask#onPostExecute(java.lang.Object) 
*/ 
@Override 
protected void onPostExecute(String result) { 
    // execution of result of Long time consuming operation 
} 

/* (non-Javadoc) 
* @see android.os.AsyncTask#onPreExecute() 
*/ 
@Override 
protected void onPreExecute() { 
// Things to be done before execution of long running operation. For example showing ProgessDialog 
} 

/* (non-Javadoc) 
* @see android.os.AsyncTask#onProgressUpdate(Progress[]) 
*/ 
@Override 
protected void onProgressUpdate(Void... values) { 
    // Things to be done while execution of long running operation is in progress. For example updating ProgessDialog 
} 
}