2010-07-16 18 views
15

Im trong giai đoạn khái niệm/thiết kế xây dựng một ứng dụng và tôi đã đạt được một chút của một trò đùa. Về cơ bản tôi đã tìm kiếm một cách để nhúng một hoạt động vào giao diện người dùng của một tương tự như cách một TabHost/TabActivity. Sẽ có một cửa sổ ở phía trên cùng của màn hình có chứa hoạt động khác, và dưới đây sẽ là các nút và điều khiển độc lập với hoạt động trên và phải luôn hiển thị. Người dùng có thể điều hướng từ một hoạt động này sang hoạt động khác trong cửa sổ mà không gây ra bất kỳ thay đổi nào đối với các điều khiển bên dưới.android: sử dụng ActivityGroup để nhúng hoạt động

Trong khi xem xét vấn đề tôi chạy trên ActivityGroup, trông giống như nó sẽ hữu ích, nhưng làm thế nào tôi sẽ thực hiện nó? Bất cứ ai cũng có kinh nghiệm với ActivityGroup hoặc có ý tưởng khác?

Trả lời

19

Có, bạn sẽ triển khai Nhóm hoạt động, đây sẽ là vùng chứa các Hoạt động khác của bạn. Khi người dùng nhấp vào một trong các nút, bạn sẽ nhận được một tham chiếu đến LocalActivityManager, và sử dụng nó để bắt đầu, và nhúng hoạt động bên trong. Một cái gì đó như thế này:

LocalActivityManager mgr = getLocalActivityManager(); 

Intent i = new Intent(this, SomeActivity.class); 

Window w = mgr.startActivity("unique_per_activity_string", i); 
View wd = w != null ? w.getDecorView() : null; 

if(wd != null) { 
    mSomeContainer.addView(wd); 
} 

Lưu ý, sử dụng phương pháp này có thể khá phức tạp, bởi vì trừ khi trọng tâm là vừa phải, nhấn nút phần cứng (như nút menu) chỉ duy nhất sẽ kích hoạt sự kiện trên ActivityGroup thay vì Hoạt động bên trong. Bạn phải tìm cách nào đó để tập trung hoạt động bên trong sau khi bạn thêm nó vào khung nhìn vùng chứa, tại thời điểm đó thậm chí sẽ xảy ra trong hoạt động bên trong và lan truyền đến hoạt động của vùng chứa.

Nó có thể được thực hiện, tôi đã thực hiện nó ... và nó hoạt động. Nó phức tạp hơn một chút so với tôi nghĩ.

Dù sao, tôi có hầu hết các thông tin này bằng cách nhìn vào mã TabHost, có thể được tìm thấy here

+0

oh tuyệt vời tôi đã tìm kiếm mã nguồn tabhost. điều này có vẻ tốt, nhưng tất cả đều rất mới đối với tôi. quan tâm để cung cấp cho một số lời giải thích về những gì bạn đang làm trong ví dụ mã của bạn? – mtmurdock

+1

phần startActivity chỉ khởi động Activity mà không hiển thị nó trên màn hình. Sau đó, bạn sẽ có được View có tất cả nội dung và thêm nó vào View bên trong ActivityGroup của bạn. LocalActivityManager quản lý mọi thứ cho bạn, như gửi onPause và onResume đến các hoạt động bên trong của bạn khi bạn nhấn nút home và – synic

+0

một điều nữa: đối tượng "cửa sổ" này là gì và nó được thực hiện như thế nào? tôi có thể chỉ cần đặt một thẻ '' vào bố cục nơi tôi muốn nó đi và sau đó gán nó trong mã? ps cảm ơn, bạn thật tuyệt vời. – mtmurdock

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