Tôi có một ứng dụng với ViewPager chứa hai đoạn: một đoạn chính và một đoạn danh sách. Nếu một cái gì đó trong danh sách được chọn, một sự kiện được nêu lên được xử lý trong hoạt động. Hoạt động chuyển sang phân đoạn chính và gọi phương thức "setSelectedItem". Trong phương pháp này, Tôi sử dụng getView() để tìm một dạng xem cụ thể để thay đổi văn bản theo mục đã chọn.getView trong trả về mảnh đôi khi null
Hầu hết thời gian hoạt động, nhưng đôi khi getView trả về giá trị rỗng và tôi không biết tại sao.
Các pagerAdapter được tạo ra trong OnCreate của hoạt động:
this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager());
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setAdapter(this.mPagerAdapter);
Adapter pager tạo ra thể hiện của cả hai mảnh trong constructor của nó:
public PagerAdapter(FragmentManager fm) {
super(fm);
this.main = MainFragment.newInstance();
this.list = ListFragment.newInstance();
}
Đây là phương pháp trong hoạt động này được gọi là khi một mục từ danh sách được chọn:
ViewPager pager = (ViewPager)super.findViewById(R.id.viewpager);
pager.setCurrentItem(0, true);
((MainFragment)mPagerAdapter.getItem(0)).setSelectedItem(id);
Và cuối cùng là thứ là được dòng trong phương pháp setSelectedItem trong MainFragment mà nguyên nhân của vấn đề:
TextView s = (TextView)getView().findViewById(R.id.CurrentSelection);
Tôi đã thử nhiều điều tôi đọc về nhưng vấn đề vẫn còn xảy ra đột xuất.
Rất tiếc, tôi có cùng sự cố và không có giải pháp. Mã của tôi được rải rác nếu (getView() == null) trả về; ở những nơi khác nhau. Nếu bạn đã giải quyết được vấn đề bây giờ, tôi sẽ quan tâm. – StackOverflowed
Bạn có thể chia sẻ mã nơi bạn thêm phân đoạn vào trình quản lý phân đoạn không? Có thể getView sẽ trả về null nếu onCreateView (một phần của vòng đời mảnh vỡ) đã không được gọi cho mảnh - tức là đoạn chưa hoàn toàn được thêm vào hoạt động. – PacificSky
Bạn đang gọi "TextView s" ở đâu? Đây có phải là trong chế độ xem View công khai trong Phân đoạn không? –