2013-05-15 53 views
7

Trong ứng dụng Android của tôi, tôi sử dụng đoạn mã sau để tạo tab:Android: truyền tham số cho một tab

mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); 
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); 
mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"), 
      MyFragment.class, null); 

Trong phương pháp addTab, tham số thứ ba là một đối tượng Bundle và là null. Tôi có thể sử dụng tham số thứ ba này để truyền tham số cho đoạn của tôi không?

Tài liệu API Android bị trống cho addTab và không ghi lại thông số này.

Trả lời

11

Câu trả lời là có. các tham số mà bạn đang truyền trong Bundle này sau đó được đặt làm đoạn của bạn arguments và có thể được truy cập với getArguments từ bên trong đoạn.

Mã mà làm cho nó xảy ra trong FragmentTabHost là:

newTab.fragment = Fragment.instantiate(mContext, 
         newTab.clss.getName(), newTab.args); 
+0

Làm việc, cảm ơn! –

+0

@Sean: Loại đối tượng nào là newTab? Tôi không thể lấy được thuộc tính fragment từ FragmentTabHost. – dannyroa

+0

@dannyroa Hy vọng tôi hiểu đúng câu hỏi của bạn. Trước tiên, bạn nên biết rằng bạn luôn có thể truy cập các đoạn của mình thông qua cùng một TAG mà bạn đã khởi tạo chúng trong máy chủ tab, với một 'getSupportFragmentManager() đơn giản. FindFragmentByTag (TAG_OF_FRAGMENT)'. Nếu bạn muốn biết phân đoạn hiện tại được hiển thị trong máy chủ lưu trữ tab, hãy sử dụng http://developer.android.com/reference/android/widget/TabHost.html#getCurrentTabTag() để tìm nạp TAG và sau đó bạn có thể truy cập đoạn như đã đề cập ở trên. P.S. "newTab" là một thành viên bên trong của FragmentTabHost. – Sean

1

Nhìn vào FragmentTabHost.java, trông giống như nó đi bó này đến tabinfo, mà inturn có fragment.So câu trả lời là có !

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