this question has answer here:
- what nullpointerexception, , how fix it? 12 answers
i'm trying staggered grid layout using recyclerview
in 1 of viewpagers fragments. when start app, crashes , throws error:
caused by: java.lang.nullpointerexception: attempt invoke virtual method 'void android.support.v7.widget.recyclerview.setadapter(android.support.v7.widget.recyclerview$adapter)' on null object reference @ xxx.homeactivity.oncreate(homeactivity.java:39) @ android.app.activity.performcreate(activity.java:5990) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1106) @ android.app.activitythread.performlaunchactivity(activitythread.java:2278)
my first thought might caused order in views loaded i'm not sure. have viewpager
2 fragments. have recyclerview
declared in first fragments xml, so:
res/layout/fragment_home.xml:
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.recyclerview android:id="@+id/home_grid" android:layout_width="match_parent" android:layout_height="match_parent" /> </relativelayout>
heres relative parts of activity:
@override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_home); butterknife.bind(this); setuptoolbar(); setuptabs(); homegridadapter adapter = new homegridadapter(contacts.createfakecontacts(20)); recyclerview recyclerview = (recyclerview) findviewbyid(r.id.home_grid); recyclerview.setadapter(adapter); recyclerview.setlayoutmanager(new staggeredgridlayoutmanager(2, staggeredgridlayoutmanager.vertical)); }
here first fragments java file:
public class homefragment extends fragment { public static final string arg_page = "arg_page"; private int mpage; public static homefragment newinstance(int page) { bundle args = new bundle(); args.putint(arg_page, page); homefragment fragment = new homefragment(); fragment.setarguments(args); return fragment; } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); mpage = getarguments().getint(arg_page); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // inflate layout fragment return inflater.inflate(r.layout.fragment_home, container, false); } }
i dont think need post recyclerviews adapter code dont think part of issue, if needed can.
any input on issue appreciated!
edit: requested, heres activitys xml file:
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".homeactivity"> <android.support.v7.widget.toolbar android:id="@+id/toolbar" android:minheight="?attr/actionbarsize" android:layout_width="match_parent" android:layout_height="75dp" style="@style/toolbarstyle" > <android.support.design.widget.tablayout android:id="@+id/tab_layout" android:layout_width="match_parent" android:layout_height="match_parent" app:tabmode="scrollable"/> </android.support.v7.widget.toolbar> <android.support.v4.view.viewpager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> </linearlayout>
you loading activity_home in activity
setcontentview(r.layout.activity_home);
and home_grid located in first_fragment
<relativelayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v7.widget.recyclerview android:id="@+id/home_grid" android:layout_width="match_parent" android:layout_height="match_parent" /> </relativelayout>
Comments
Post a Comment