0

내 안드로이드 응용 프로그램의 런타임 동안이 특정 오류를 얻고에서 재활용보기를 설정하는 동안 : 나는 안드로이드 재활용 뷰와 어댑터 설명서를 확인하신 후널 포인터 예외 조각

java.lang.NullPointerException: Attempt to invoke virtual method`'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference 
                       at com.monkeyengineer.project.MyFragment.onCreateView(MyFragment.java:36) 

그러나 그것은 나에게 도움이되지 않는다 왜 이것이 부서 지는지.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:context="com.monkeyengineer.project.MyFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="vertical" /> 

    <TextView 
     android:id="@+id/text_view" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:height="45dp" 
     android:drawableLeft="@android:drawable/ic_input_add" 
     android:drawableStart="@android:drawable/ic_input_add" 
     android:drawablePadding="8dp" 
     android:gravity="start|center" 
     android:padding="8dp" 
     android:text="Add stuff." 
     android:textStyle="bold" 
     android:layout_gravity="center_horizontal" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 
: 여기
public class MyFragment extends Fragment { 

    private List<Project> data; 
    private RecyclerView recyclerView; 
    private TextView textView; 

    private boolean mIsRecyclerViewVisible = true; 

    public MyFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View mView = inflater.inflate(R.layout.my_fragment, container, false); 
     textView = (TextView) container.findViewById(R.id.text_view); 
     recyclerView = (RecyclerView) container.findViewById(R.id.recycler_view); 
     recyclerView.setHasFixedSize(true); 

     LinearLayoutManager mLayoutManager = new LinearLayoutManager(getContext()); 
     mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
     recyclerView.setLayoutManager(mLayoutManager); 

     Adapter adapter = new ProjectsAdapter(data); 
     recyclerView.setAdapter(adapter); 

     if (data != null) { 
      textView.setVisibility(View.INVISIBLE); 
      mIsRecyclerViewVisible = true; 
     } else { 
      recyclerView.setVisibility(View.INVISIBLE); 
      mIsRecyclerViewVisible = false; 
     } 
     return mView; 
    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     if (mIsRecyclerViewVisible) { 
      recyclerView.setVisibility(View.VISIBLE); 
      textView.setVisibility(View.INVISIBLE); 
     } else { 
      recyclerView.setVisibility(View.INVISIBLE); 
      textView.setVisibility(View.VISIBLE); 
     } 
    } 

    @Override 
    public void onStop() { 
     super.onStop(); 
     mIsRecyclerViewVisible = data != null; 
    } 
} 

내 조각 레이아웃입니다 : 여기

은 (import 문은 간결함을 위해 생략) 내가 컨테이너보기에 findViewById 메소드를 호출하고 내 조각 내 코드입니다

그렇다면 왜 null 포인터 예외가 발생합니까? 리사이클 러 뷰 객체가 null 값으로 할당되었지만 왜 그런지 생각할 수 없기 때문입니다.

감사합니다.

답변

2

잘못 팽창 시켰습니다. container에서 mView으로보기를 확대하십시오. 아래처럼 변경하십시오 :

textView = (TextView) mView.findViewById(R.id.text_view); 
    recyclerView = (RecyclerView) mView.findViewById(R.id.recycler_view); 
+0

@TomFinet이 정보가 도움이 될 경우 제 답변을 수락하십시오. :) – SripadRaj

+0

고마워, 그건 그렇게 분명한 실수였다. –