2012-04-04 4 views
7

Hiện tại tôi đang xác định một loạt các Fragments trong tệp tài nguyên và ẩn chúng trong phương thức onCreate của Activity, nhưng tôi không hài lòng với phương pháp này vì tôi mong đợi đây là một trong những đặc điểm mà mỗi phân đoạn sẽ xác định cho chính nó.là nó có thể bắt đầu một Fragment ẩn bằng cách xác định trạng thái của nó trong XML?

Tôi có đang phản đối Phân đoạn quá nhiều hoặc chỉ thiếu kỹ thuật không?

cảm ơn, R

Trả lời

4

Tôi không hài lòng với phương pháp này như tôi mong chờ điều này là một trong những đặc điểm mà mỗi đoạn sẽ xác định cho chính nó.

Tôi không đồng ý với đánh giá đó.

Các mảnh vỡ chịu trách nhiệm cho một phần nhỏ của màn hình và bất kỳ sự kiện nào được chứa hoàn toàn trong phần nhỏ của màn hình.

Cho dù đoạn được lưu trữ Hoạt động A hoặc Hoạt động B hoặc Hoạt động C, cho dù đó là bên cạnh các đoạn khác hay không, cho dù hiện tại có hiển thị hay không, v.v. Trách nhiệm đó nằm ở hoạt động lưu trữ (hoặc các hoạt động, nếu đoạn được sử dụng lại). Các hoạt động lưu trữ biết kích thước màn hình và những gì nên được thực hiện trong điều khoản của tải các mảnh cụ thể lên màn hình.

Sau khi tất cả, các quy tắc có thể thay đổi. Có lẽ đoạn được ẩn trên màn hình nhỏ/bình thường nhưng có thể nhìn thấy trên màn hình lớn/xlarge. Hoặc, có lẽ đoạn ban đầu được sử dụng riêng lẻ nhưng sau đó được tải vào một ViewPager. Hoặc, có lẽ đoạn được tạo động như một phần của một FragmentTransaction và được thêm vào ngăn xếp BACK, do đó người dùng có thể độc lập loại bỏ đoạn đó. IMHO, mảnh không nên biết và cũng không quan tâm đến bất kỳ thứ gì trong số này, vì nó vượt qua ranh giới của một mảnh riêng biệt đó.

+0

Cảm ơn Mark, phải suy nghĩ lại cách tiếp cận của tôi với các phân đoạn. Tôi nghĩ rằng tôi đang sử dụng chúng theo cách quá tĩnh. Các tài liệu gợi ý suy nghĩ trong mô hình Web mà có lẽ tôi không. –

+0

Có thể bắt đầu một đoạn ẩn bằng cách ẩn nó qua mã java chứ không phải xml không? Tôi hiện đang đặt mã ẩn trong onStart() của đoạn bị ẩn. Nhưng, nó vẫn còn nhìn thấy được. – Namratha