2015-07-13 66 views
5

Tôi thiết lập thanh công cụ trong hoạt động chính của mình và khi tôi đi vào trong một đoạn, tôi muốn thêm một thanh trượt trên đó. Nếu tôi có quyền truy cập vào các đối tượng Thanh công cụ, tôi sẽ chỉ cần làm:Bắt Thanh công cụ trong Fragment

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
setSupportActionBar(toolbar); 
getSupportActionBar().setDisplayShowTitleEnabled(false); 


Spinner mNavigationSpinner = new SpinnerTrigger(getSupportActionBar().getThemedContext()); 
toolbar.addView(mNavigationSpinner); 

Nhưng nếu tôi nhận được nó bằng cách sử

((ActionBarActivity) getActivity()).getSupportActionBar() 

tôi không có bất kỳ phương pháp addView(). Vì vậy, câu hỏi của tôi là, làm cách nào tôi có thể thêm chế độ xem vào Thanh công cụ theo phân đoạn nếu Bản thân thanh công cụ được tạo trong một Hoạt động.

Tôi không chắc đây có phải là quan điểm tốt nhất về việc này hay không, nhưng tôi không nghĩ rằng tôi có thể có Spinner được xác định trong bố cục, vì hầu hết các đoạn của tôi không sử dụng nó đặt tiêu đề cho thanh công cụ. Nhưng đồng thời, nó sẽ là tuyệt vời nếu tôi có thể xác định thanh công cụ một lần trong hoạt động chính và không làm lại nó cho mọi đoạn.

+0

khi bạn đang tạo đối tượng phân đoạn, bạn có thể chuyển đối tượng thanh công cụ đến hàm tạo đoạn. Đây là những gì tôi đã làm .. – Moinkhan

+0

@Moinkhan như thế nào? Tôi nên chuyển vật gì tới mảnh vỡ? – Talha

+0

@Talha khi bạn tạo phân đoạn từ hoạt động như Fragment fm = YourFragment.getInstance (yourToolbarinstance) ... nhưng tôi nghĩ câu trả lời được chấp nhận là cách tốt để đạt được điều này .. – Moinkhan

Trả lời

24

Một cách khác để đạt được điều tương tự từ Ellitz câu trả lời, bên trong truy cập đoạn thanh công cụ (hoặc bất kỳ chế độ xem nào khác bên trong hoạt động) trực tiếp:

Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); 
5

bạn có thể nhận được nó bằng cách sử

Toolbar refTool = ((NameOfClass)getActivity()).toolbar; 

hay, tạo ra một thể hiện của MainActivity của bạn, sau đó, ghi đè onAttach(Activity activity) và gán đối tượng bạn thể hiện của MainActivity để hoạt động trong onAttach()

+0

Nếu không có phương pháp tích hợp cho điều này, tôi đoán sẽ là giải pháp tốt nhất. Cảm ơn bạn. – Limon

0

Xem thanh công cụ chính mục đích là https://developer.android.com/reference/android/widget/Toolbar.html đọc ở đây vì vậy không có gì là sự chú ý trong thanh công cụ và thanh tác vụ. vì vậy nếu bạn muốn thêm chế độ xem vào thanh công cụ trước khi đặt thành Thanh tác vụ thì toolbar.addView(your view); là tốt nhưng sau khi áp dụng cho setactionbar(toolbar) hoặc setSupportActionbar(toolbar) bạn có thể đặt chế độ xem thành thanh tác vụ.

ví dụ: ((ActionBarActivity) getActivity()). GetSupportActionBar(). Setview (view của bạn)

Thats nó ...

0

Tôi muốn thêm hình đúc vào những gì Budius cho biết.

Toolbar toolbar = (Toolbar)getActivity().findViewById(R.id.toolbar); 

là cách phù hợp để thực hiện. Vì

getActivity().findViewById(R.id.toolbar); 

trả về chế độ xem. Điều này sẽ cho bạn lỗi và bạn nên đưa nó đến Toolbar.

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