Tôi đang sử dụng ViewPager
với tùy chỉnh PagerFragmentAdapter
sử dụng danh sách nội bộ để cung cấp phân đoạn. Tôi muốn thêm và xóa các phân đoạn động trên các thay đổi cài đặt.Thêm và xóa các phân đoạn động trong ViewPager
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_pager);
mAdapter = new ServicePagerAdapter(getSupportFragmentManager());
mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
}
tôi đã cố gắng gọi lại các setAdapter
nhưng tôi có được một IllegalStateException (Can not perform this action after onSaveInstanceState)
.
Làm cách nào để đạt được mục đích của mình?
Thật không may nó không phải là dễ dàng như vậy. FragmentPagerAdapter lưu trữ Fragments, bạn phải tạo một PagerAdapter tùy chỉnh hoặc sử dụng một số thủ thuật. – Matroska
trong mẫu mã của bạn mà bạn đề cập đến 'ServicePagerAdapter' - đây không phải là một lớp thư viện, vì vậy tôi giả sử bạn đã sử dụng bộ điều hợp tùy chỉnh. Vì vậy, có, bạn cần thực hiện tùy chỉnh của lớp 'PagerAdapter'. Về câu hỏi chính của bạn - tôi nghĩ rằng nó đã được trả lời. – HitOdessit
Không đủ để gọi notificationDataSetChanged() trên PagerAdapter nếu các phần tử đã bị xóa. Bạn cũng cần ghi đè phương thức getItemPosition của PagerAdapter. Trả lại POSITION_UNCHANGED nếu phần tử vẫn ở đó hoặc POSITION_NONE nếu phần tử đã bị xóa. –