여기 새로 왔습니다. 튜토리얼을 따라 RecyclerView를 사용하여 카드 목록을 만들었습니다. 이 앱은 출시에 충돌 및 로그는 말한다 : 코드의리무버가있는 android Studio에서 NullPointerException을 받으십시오.
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wc.gap.worldcupfixture/com.wc.gap.worldcupfixture.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference
at com.wc.gap.worldcupfixture.MainActivity.onCreate(MainActivity.java:78)
조각 :
//Variables
private static RecyclerView.LayoutManager mLayoutManager;
private static RecyclerView mRecyclerView;
private static RecyclerView.Adapter mAdapter;
private static ArrayList <Integer> removedItems;
private static ArrayList <MatchData> matches;
static View.OnClickListener myOnClickListener;
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
//error here:
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
//Line 78:
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
내가 THIS tutorial에서 코드를 들었다. 2 개의 배열 인 'matches'는 크리켓 경기에 대한 정보를 포함하며 카드로 표시됩니다. 그것들이 해제 될 때, 그들은 두번째 배열 'removedItems'를 채 웁니다. 두 번째 배열은 제거 된 일치 정보를 첫 번째 배열에 다시 추가하는 데 사용됩니다.
줄을 제거하면 80 줄에서 81 줄까지 동일한 오류가 표시됩니다. 오류는 지속되지만 줄 81을 삭제하면 특정 줄 번호가 오류 로그에 표시되지 않았습니다. 도움이되는 경우 : 배열 일치가 채워집니다 튜토리얼 코드를 약간 조정했지만 문제를 정확하게 지적 할 수 없습니다. 어떻게 부울을 null로 만들 수 있습니까? 아니면 오류가 의미하는 것은 무엇입니까?
미리 감사드립니다. 필요한 경우 전체 코드를 게시 할 수 있습니다.
편집 : 더 스크립트
private static RecyclerView.LayoutManager mLayoutManager;
private static RecyclerView mRecyclerView;
private static RecyclerView.Adapter mAdapter;
private static ArrayList<Integer> removedItems;
private static ArrayList<MatchData> matches;
static View.OnClickListener myOnClickListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myOnClickListener = new MyOnClickListener(this);
mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
matches = new ArrayList<>();
for (int i = 0; i < MyData.matchArray.length; i++){
matches.add(new MatchData(
MyData.matchArray[i],
MyData.timingArray[i],
MyData.venueArray[i],
MyData.id_[i]
));
}
removedItems = new ArrayList<>();
mAdapter = new MyAdapter(matches);
mRecyclerView.setAdapter(mAdapter);
//other things after
}
Activity_main.
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout"
android:layout_width="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity">
<FrameLayout android:id="@+id/container" android:layout_width="match_parent"
android:layout_height="match_parent" />
<fragment android:id="@+id/navigation_drawer"
android:layout_width="@dimen/navigation_drawer_width" android:layout_height="match_parent"
android:layout_gravity="start"
android:name="com.wc.gap.worldcupfixture.NavigationDrawerFragment"
tools:layout="@layout/fragment_navigation_drawer" />
</android.support.v4.widget.DrawerLayout>
'activity_main.xml'을 (를) Java 코드가 아닌 게시하십시오. – Simas
업데이트 된 답변보기 – Simas