我想在两个活动之间添加进度条

3
在 Android 应用程序中,当第二个活动从第一个活动被调用时,我想在两个活动之间放置进度条,以便应用程序看起来处于运行状态,我认为这样的事情是通过线程完成的,请帮助我,如果有人知道如何做。谢谢提前。

1
在第二个活动中,你实际上在做什么?请更加详细地描述。这是一个热爱编程的网站,不是“短信”网站,请不要使用“ne1”等短信用语。 - Paresh Mayani
事实上,我想在两个活动之间放置一个进度条,在第一个活动中,从数据库显示数据,在第二个活动中显示所选数据的更多详细信息。主要是在这两个事物之间放置进度条,以便用户不会感觉应用程序已经挂起… - Bhavin2887
请查看我的答案,它完全符合您的要求。请仔细阅读答案并尝试实施它。 - Paresh Mayani
4个回答

4

Kartik是正确的,但是让我补充更多内容以在活动中显示进度条。

由于您想要在后台获取数据时显示进度条,因此应在第二个活动中实现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类之后,每当你想执行它时,你需要调用execute()

听起来有点傻,但由于我是 Android 新手,多亏这个答案,我现在明白了 AsyncTask!谢谢! - Valentino Ru
@ValentinoRu 很高兴我的回答对你有帮助。干杯!不过这个问题已经在一年前得到了解答 :) - Paresh Mayani

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
 }
}

1
只需要在进行计算的活动中创建一个ProgressDialog即可。
ProgressDialog progressDialog = ProgressDialog.show(context, title, text);

当你完成任务后关闭它

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

但一定要在UI线程中显示和关闭对话框。AsyncTask可能是这种情况下最好的解决方案。


1
在Android中,只有主线程(也称为UI线程)可以执行UI操作。因此,您无法从新线程显示进度条。 我认为解决您的问题的方法可能是显示第二个活动(可能为空),在onCreate()中显示进度对话框,然后在该活动中执行任何繁重的工作。 希望这可以帮助到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接