Tôi không thể tạo bố cục động cho từng tab, tôi có thể tạo các tab một cách linh hoạt thông qua hàm tạo này (MyPagerAdapter công khai (FragmentManager fm, int noOfTabs)) nhưng tôi không thể tăng Chế độ xem cho từng tab được tạo cho mỗi phân đoạn. Điều này phải là năng động.
lớp công khai MyPagerAdapter mở rộng FragmentPagerAdapter
{
chuỗi cuối cùng riêng tư[] TITLES = { "Danh mục", "Trang chủ", "Trả tiền nhiều nhất", "Miễn phí nhiều nhất", "Doanh thu cao nhất", "Trả tiền mới hàng đầu",
"Miễn phí mới hàng đầu", "Xu hướng" };
int noOfTabs;
**MyPagerAdapter công khai(FragmentManager fm, int noOfTabs)
{
siêu(fm);
this.noOfTabs = noOfTabs;
}**
/*MyPagerAdapter công khai(FragmentManager fm)
{
siêu(fm);
}*/
@Ghi đè
public CharSequence getPageTitle(int location) {
trả về TITLES[vị trí];
}
@Ghi đè
công khai int getCount() {
trả về noOfTabs; //TITLES.length;
}
@Ghi đè
mảnh công khai getItem(int location) {
trả về SuperAwesomeCardFragment.newInstance(position);
}
}
Vấn đề tôi gặp phải ở đây phải là ba đoạn động chứ không phải tĩnh (FragmentA, FragmentB, FragmentC), nó có thể là bất kỳ số lượng đoạn nào tùy thuộc vào int noOfTabs:
@Ghi đè
mảnh công khai getItem(int location) {
Đoạn mảnh = null;
công tắc (vị trí) {
trường hợp 0:
đoạn = đoạn mớiA();
phá vỡ;
trường hợp 1:
đoạn = Đoạn mớiB();
phá vỡ;
trường hợp 2:
đoạn = Đoạn mớiC();
phá vỡ; }
trả lại mảnh;
}
Cảm ơn trước nếu có ai có thể giúp tôi khi tôi đang sử dụng nó với sự trợ giúp của thư viện PagerSlidingTabStrip.
Giải pháp @nbokmans có thể ổn, nhưng tôi đã thực hiện bằng cách sử dụng vùng chứa.
Tạo một đoạn máy chủ đơn giản bằng FrameLayout và thay thế đoạn đó là một giải pháp động tốt đối với tôi.
Sử dụng Otto EventBus thật tuyệt vời vì nó có thể được thay đổi từ bất cứ đâu chỉ bằng một bài đăng đơn giản
@Đặt mua
sự thay đổi thú vịFragment(type: FragmentTypeEvent){
val ft = hoạt động.supportFragmentManager.beginTransaction()
đoạn val = getFragment(type)
ft.replace(R.id.container_frame,frag)
ft.commit()
}
Tôi là một lập trình viên xuất sắc, rất giỏi!