2011-10-17 36 views
5

Tôi đang tìm một số lời khuyên về cách tốt nhất để xử lý các mảnh vỡ khởi chạy các đoạn khác.Cách nạp đoạn mới vào cùng một không gian như đoạn hiện tại

Tôi đang chuyển đổi một ứng dụng mà tôi đã bắt đầu viết bằng cách sử dụng phương pháp tiếp cận dựa trên Hoạt động hơn và kể từ đó bắt đầu chuyển nó sang sử dụng Phân đoạn. Tôi có một số Fragments được sử dụng để khởi chạy một Activity mới và tôi muốn di chuyển chúng ra để tung ra các Fragments khác trong cùng một khung nhìn mà Fragment hiện tại đang cư trú.

Ví dụ - Tôi có một Hoạt động có WebView sử dụng WebViewClient để xử lý các tương tác js-> java bên trong. WebViewClient tôi có thể khởi động các hoạt động khác, mà tôi sử dụng để làm với:

i = new Intent(context, GoogleMapActivity.class); 
startActivity(i); 

hoạt động webview này có thể là toàn màn hình hoặc trong một cái nhìn với một menu ở bên cạnh, nhưng tôi muốn các webview tôn trọng bố trí - vì vậy nếu trình đơn hiện diện, nó sẽ vẫn tồn tại khi tung ra các mảnh vỡ mới - tôi chỉ không biết cách tiếp cận tốt nhất để viết mã để khởi chạy Fragments.

Vì vậy, ... có cách nào, trong một Phân đoạn, về cơ bản nói một Mảnh vỡ mới để tải vào cùng một không gian như Fragment hiện tại hay không cần phải có một số tương tác với Hoạt động?

** EDIT **

Cho rằng có một vài bố trí khác nhau mà có thể được sử dụng, tôi không bao giờ biết mà id Tôi nên nhắm mục tiêu để đưa đoạn trong - do đó tôi cần phải biết nếu có một cách để làm điều này mà không biết id (ví dụ như trong phương thức replace).

+0

nhìn vào câu hỏi này. http://stackoverflow.com/questions/7790945/how-can-i-use-fragmentmanager-to-display-fragment-abc-in-a-framelayout/7791116#7791116 –

Trả lời

5
getFragmentManager().beginTransaction() 
    .replace(((ViewGroup) getView().getParent()).getId(), fragment) 
    .addToBackStack(null) 
    .commit(); 

Điều này sẽ thay thế vùng chứa chính bằng đoạn mong muốn.

0

Điều đó có thể thực hiện được thông qua FragementManager.replace(). Hãy xem documentation for Fragment và đặc biệt là ví dụ dài hơn trong phần "Bố cục" ở đó.

+0

Cho rằng có một vài bố cục khác nhau có thể được sử dụng, tôi không phải lúc nào cũng biết id nào tôi nên nhắm mục tiêu để đưa mảnh vào - do đó tôi cần phải biết liệu có cách nào để làm điều này mà không biết id. Hoặc cách tiếp cận tôi nên sử dụng - tức là tôi nên đặt tên cho tất cả các mảnh với cùng một id? – Martyn

+1

bạn cũng có thể lấy mảnh bằng thẻ. sau đó thay thế id, bạn có thể chuyển đối số đầu tiên thành phân đoạn. –

-1

Nếu bạn muốn thêm Fragment thay vì thay thế nó, sử dụng:

getFragmentManager().beginTransaction().add(R.id.fragment_container, new Fragment()).commit(); 
Các vấn đề liên quan