2015-01-27 22 views
24

Tôi nhận được sau ExceptionNguyên nhân cho NullPointerException android.support.v7.widget.RecyclerView.onMeasure

01-27 11:15:15.756 18348-18348/com.example.pnimje.newswipelistview E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.NullPointerException 
      at android.support.v7.widget.RecyclerView.onMeasure(RecyclerView.java:1764) 
      at android.view.View.measure(View.java:15848) 
      at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:728) 
      at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:477) 
      at android.view.View.measure(View.java:15848) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at android.view.View.measure(View.java:15848) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
      at android.support.v7.internal.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:453) 
      at android.view.View.measure(View.java:15848) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at android.view.View.measure(View.java:15848) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404) 
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:695) 
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:588) 
      at android.view.View.measure(View.java:15848) 
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5008) 
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:310) 
      at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2189) 
      at android.view.View.measure(View.java:15848) 
      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1905) 
      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104) 
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1284) 
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
      at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
      at android.view.Choreographer.doFrame(Choreographer.java:532) 
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
      at android.os.Handler.handleCallback(Handler.java:730) 
      at android.os.Handler.dispatchMessage(Handler.java:92) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5103) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:525) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
      at dalvik.system.NativeStart.main(Native Method) 

và RecyclerView.java:1764 là

mLayout.onMeasure(mRecycler, mState, widthSpec, heightSpec); 

Tại sao mLayout (LayoutManager) null ?

+0

Tôi đoán vì một nơi nào đó dọc theo đường, nó được đặt thành rỗng hoặc không bao giờ không rỗng. Bạn sẽ cần phải hiển thị nhiều mã hơn thế. – iheanyi

+0

cho bất kỳ ai có lỗi này do tab Viewpager gây ra, xem [solution] (http://stackoverflow.com/a/34500413/2977976) – HMG

Trả lời

55

vì bạn chưa đặt LinearLayoutManager thành RecyclerView.

ví dụ:

mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView); 
    LinearLayoutManager layoutManager = new LinearLayoutManager(context); 
    mRecyclerView.setLayoutManager(layoutManager); 
    mRecyclerView.setAdapter(new CustomAdapter()); 
+2

Không hoạt động, tôi thử phân đoạn và không hoạt động – delive

+0

thành phân đoạn - LinearLayoutManager mới (getActivity) –

3

Những loại lỗi thường bắt nguồn từ không thiết lập quản lý bố trí của RecyclerView. Bein' vội vã bản thân mình Tôi quên để thiết lập một kết thúc trong các lỗi sau:

java.lang.NullPointerException 
     at android.support.v7.widget.RecyclerView.onInterceptTouchEvent(RecyclerView.java:1636) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1820) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2177) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1878) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2177) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1878) 
     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2177) 
     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1878) 

Các dòng sau sẽ giải quyết nó:

mRecyclerView.setLayoutManager(new LinearLayoutManager((Activity)this)); 
1

Antón phản ứng là tốt nhưng có thể gây nhầm lẫn trong người mới bắt đầu như tôi, tài năng này phục vụ để làm rõ một số nghi ngờ.

RecyclerView rv; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_buscar); 

    rv = (RecyclerView) findViewById(R.id.RecViewTest); 
    LinearLayoutManager llm = new LinearLayoutManager(this); 
    rv.setLayoutManager(llm); 


} 
0

Bạn cần xác minh rằng những gì bạn đang gửi đến bộ điều hợp không phải là trống List<Type>. Tôi khuyên bạn nên tạo mã số RecyclerView và thêm mã sau này khi bạn có thông tin hoặc đặt đối tượng NULL trống trước khi chuyển nó cho hàm tạo của bộ điều hợp.

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