2010-02-09 25 views
11

nút này được hiển thị trên hoạt động bắt đầu của tôi. Sau khi nhấn nó, một hoạt động mới sẽ được khởi chạy nhưng điều này mất một chút thời gian để khởi tạo hoạt động mới đó, một số dữ liệu được thu thập từ Internet. Điều này làm việc một nửa. Hộp thoại tiến trình được hiển thị nhưng bánh xe tiến trình không quay.Hộp thoại tiến trình trong khi bắt đầu hoạt động mới

Ai đó có thể cho tôi biết tại sao điều này xảy ra?

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(); 

      } 
    }); 

thx

Trả lời

8

Bạn cần phải chứng minh sự tiến bộ thoại ở đầu thật của Hoạt động thứ 2 của bạn, chứ không phải người đầu tiên của bạn. Và bạn cần thực hiện công việc tải xuống dữ liệu của mình trong AsyncTask.

Xem câu trả lời của tôi để này để biết thêm:

Android SplashScreen

+0

Tốt câu trả lời, nhưng tôi muốn chủ đề đến AsyncTask chừng thread không cần phải sử dụng thread UI. – pgsandstrom

+0

Hi mbaird, thx cho câu trả lời của bạn. Tôi nhận thức được khả năng sử dụng AsyncTask để làm việc không đồng bộ nhưng trong trường hợp của tôi nó không thể sử dụng được (hoặc tôi không biết làm thế nào) vì tôi muốn bắt đầu một Hoạt động mới. Bắt đầu hộp thoại tiến trình khi bắt đầu Hoạt động thứ 2 không phải là một tùy chọn, tôi đã thử mà không có may mắn, khiến Hoạt động đầu tiên được hiển thị cho đến khi bắt đầu hoạt động thứ hai. Nếu tôi nhấn nút, nút thay đổi màu sắc của nó và sau đó hộp thoại quá trình được hiển thị như tôi mong đợi nó CHỈ bánh xe không quay. Đó là vấn đề duy nhất. – Andy

+1

@Andy, hộp thoại tiến trình không quay vòng vì bạn đang thực hiện công việc trong chuỗi giao diện người dùng. Di chuyển công việc tải xuống của bạn đến một chuỗi riêng biệt qua AsyncTask hoặc chỉ một Chủ đề hoặc Runnable. Một lần nữa, nếu bạn nhìn vào câu trả lời tôi đưa ra ở trên, và cố gắng sao chép những gì đang diễn ra trong phương thức onCreate() của câu trả lời cho câu hỏi đó trong phương thức onCreate() của hoạt động thứ 2 của bạn, tôi hứa nó sẽ hoạt động. –

Các vấn đề liên quan