启动新活动时显示进度对话框

12

这个按钮显示在我的启动活动上。点击它后,将启动一个新的活动,但这需要一些时间,因为在初始化该新活动时需要从互联网收集一些数据。 这个功能有些问题。进度对话框显示出来了,但进度轮没有旋转。

有人能告诉我为什么会出现这种情况吗?

  Button b4 = (Button) findViewById(R.id.Button01);
      b4.setOnClickListener(new View.OnClickListener() {
          public void onClick (View view) {    
           final ProgressDialog pd = ProgressDialog.show(pak.this, 
                         "", "Working..", true);

            new Thread(new Runnable(){
             public void run(){
              Intent intent = new Intent();
                 intent.setClassName("sxe.pak", "sxe.pak.List");
                 startActivity(intent);               
              pd.dismiss();
                }
           }).start();

          }
   });

谢谢

1个回答

8
你需要在第二个Activity开始时显示进度对话框,而不是第一个Activity。并且你需要在AsyncTask中完成数据下载工作。
更多信息请参见我的答案: Android SplashScreen

很好的回答,但只要线程不需要使用UI线程,我更喜欢使用Thread而不是AsyncTask。 - pgsandstrom
嗨,mbaird,感谢您的回答。我知道可以使用AsyncTask来执行异步工作,但在我的情况下它不可用(或者我不知道如何使用),因为我想启动一个新的Activity。在第二个Activity的最开始启动进度对话框不是一个选项,我已经尝试过了,但没有成功,因为第一个Activity会一直显示,直到第二个Activity启动完成。如果我点击按钮,按钮会改变颜色,然后进度对话框会像我期望的那样显示,但是转轮不会旋转。这是唯一的问题。 - Andy
1
@Andy,进度对话框没有旋转是因为你正在UI线程中进行工作。通过AsyncTask或仅使用Thread或Runnable将下载工作移动到单独的线程中。同样,如果您查看我在上面给出的答案,并尝试复制在我的答案中onCreate()方法中发生的情况到您第二个活动的onCreate()方法中,我保证它会起作用。 - Mark B
嘿,mbaird,好的,花了一些时间,但现在一切都像预期的那样工作。我不得不重写应用程序的某些部分,以正确使用AsyncTask。感谢您的帮助,它让我朝着正确的方向前进。 :) (最终您获得了我的投票;) ) - Andy

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