2012-06-19 36 views
32

Tôi gặp lỗi này bằng cách sử dụng ViewPager trong Android Support package. từ Chế độ xem ngang Swiping với ViewPager TutorialViewPager FragmentPagerAdapter Nullpointer

06-19 13:07:25.950: E/AndroidRuntime(16382): FATAL EXCEPTION: main 
06-19 13:07:25.950: E/AndroidRuntime(16382): java.lang.NullPointerException 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:347) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:342) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.view.ViewPager.populate(ViewPager.java:783) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1369) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.LinearLayout.measureVertical(LinearLayout.java:660) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.LinearLayout.onMeasure(LinearLayout.java:553) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.widget.FrameLayout.onMeasure(FrameLayout.java:293) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2092) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.View.measure(View.java:12728) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.os.Looper.loop(Looper.java:137) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at android.app.ActivityThread.main(ActivityThread.java:4424) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at java.lang.reflect.Method.invokeNative(Native Method) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at java.lang.reflect.Method.invoke(Method.java:511) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-19 13:07:25.950: E/AndroidRuntime(16382): at dalvik.system.NativeStart.main(Native Method) 

Trả lời

70

Chỉ trong trường hợp bất cứ ai không đọc ý kiến ​​của câu trả lời passsy của, đây là một tóm tắt các câu trả lời hữu ích:

1) Kiểm tra phương pháp getItem(int index) của bạn rất chặt chẽ và tìm kiếm bất kỳ logic, kịch bản hoặc câu lệnh 'ngắt' nào có thể khiến bạn kết thúc bằng đoạn null.

2) Kiểm tra xem số được trả về là getCount() khớp với số mảnh vỡ được trả lại trong getItem(int index).

3) Kiểm tra hàng nhập khẩu của bạn và đảm bảo bạn không trộn android.app.Fragment với android.support.v4.app.Fragment

+0

Đây phải là câu trả lời được chấp nhận. Ngăn xếp lỗi được ném trên cả ba tài khoản. Trong trường hợp của tôi, tôi đã không triển khai một lớp Fragment làm tăng lượt xem cho một tab cụ thể. Tôi đã được giả định rằng trả về một null từ phương thức getItem() sẽ trả về tab (tiêu đề) mà không có các Fragments liên quan trong Activity của tôi. Trả về một Fragment cho mỗi tab từ getItem() đã giải quyết vấn đề cho tôi. – user1841702

+0

Cảm ơn @chris .... vì tôi không đọc nhận xét và đã cố gắng chấp nhận câu trả lời –

+0

xảy ra với tôi và tùy chọn 1 là vé - chỉ cần chia sẻ - sử dụng trường hợp chuyển đổi bên trong getItem (int index) và nhãn trường hợp là 0, 2, 3, cũng gây ra ngoại lệ tương tự. cảm ơn. – TommySM

18

Đó là một giải pháp đơn giản. Tôi trộn android.app.Fragmentandroid.support.v4.app.Fragment

hy vọng này sẽ giúp người

+1

Bạn có chắc đó là bản sửa lỗi không? Tôi có chính xác stacktrace nhưng không có trường hợp của android.app.Fragment ... – brk3

+0

bạn có android.app.Activity hoặc android.app.FragmentActivity? sử dụng tất cả mọi thứ từ android.support.v4.app – passsy

+47

Tôi đã tìm thấy sự cố, một trong các trường hợp chuyển đổi trong getItem() của tôi bị rơi xuống phía dưới, nơi có một null trả về mặc định. – brk3

6

Nếu getItem() trong lợi nhuận Adaptor của bạn là null có thể gây ra con trỏ ngoại lệ null.

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