2011-11-03 45 views
5

Vấn đề là tôi đến từ một Hoạt động khác, và khi tôi cố gắng tham gia Hoạt động mới, nó chỉ ngồi trên một hoạt động cũ cho đến khi hiển thị mới, vì vậy tôi đang cố gắng đưa nó đến Hoạt động mới ngay lập tức, và sau đó đưa lên một màn hình tải trong khi nó được nội dung. (Nội dung đến từ trang web hoặc cơ sở dữ liệu nội bộ).Làm cách nào để tạo màn hình tải trong Android?

Tôi đã thử tiến trìnhDialog từ trang web phát triển Android nhưng nó không làm bất cứ điều gì khi Hoạt động kết thúc tải trước khi hiển thị bất kỳ điều gì, do đó, theo thời gian nó xuất hiện, không có gì để tải.

Trả lời

14

Bắt đầu hoạt động mới đầu tiên trước rồi gọi tệp tác vụ không đồng bộ .. thao tác này sẽ bắt đầu hoạt động mới khi bạn đóng hoạt động cũ. trong Oncreate hoạt động mới, hãy gọi cho lớp nhiệm vụ asyn như bên dưới

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
      setContentView(your layout here); 
      new GetTask(this).execute(); 

    } 
} 

class GetTask extends AsyncTask<Object, Void, String> { 
    Context context; 

    GetTask(Context context, String userid) { 
     this.context = context; 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     mDialog = new ProgressDialog(mContext); 
     mDialog.setMessage("Please wait..."); 
     mDialog.show(); 
    } 

    @Override 
    protected String doInBackground(Object... params) { 
     // here you can get the details from db or web and fetch it.. 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 

     mDialog.dismiss(); 
    } 
} 
+0

Tại sao bạn không chỉ làm điều đó như một Chủ đề? –

+0

AsyncTask này đã làm việc kỳ diệu, tôi chỉ áp dụng một số nội dung chung trên mục danh sách đầu tiên trong khi nó được tải và sau đó lấy nó từ nội dung được tạo ra thực tế trong bài đăngExecute – Shant82

+0

@deepa nyc work ... lấy upvote của tôi ... :) – Steve

0

Như một gợi ý, hãy thử giảm mã trong phương thức onCreate của hoạt động thứ hai. Hãy để nó đơn giản như gọi siêu và đặt chế độ xem nội dung. Điều này sẽ mang lại giao diện người dùng như được thiết kế trong XML.

Chuyển phần còn lại của mã sang phương thức onResume của bạn. Bước tiếp theo, nếu bạn có một số dữ liệu được tìm nạp từ DB hoặc bên ngoài, hãy thử sử dụng thread (how to do it & what is it) hoặc async task.

+0

Tôi sử dụng một vài startActivityForResults, điều đó sẽ khiến nó tải lại mỗi khi nó trở về? – Shant82

+0

không, nếu bạn sử dụng startActivtyForResult, bạn cần phải thực hiện onActivtyResult (..) và ngữ cảnh trả về từ đây .. Nó sẽ không tải lại hoạt động – Vinay

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