'boolean Android.support.v7.widget.recyclerview$layoutmanager.canscrollvertically()'
Solution 1:
Your recyclerView is null.
Because the RecyclerView is only added when fragment_home.xml is loaded to your activity.
That mean it is ready after (assuming your DefaultFragment is inflate fragment_home.xml)
Fragmentfragment=null;
fragment = newDefaultFragment();
FragmentManagerfragmentManager= getSupportFragmentManager();
FragmentTransactionfragmentTransaction= fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.root, fragment);
fragmentTransaction.commit();
You should do the findViewById after that.
However, fragmentTransaction.commit(); is an async process. The fragment content may not be available immediately after that.
So, you will need to call fragmentTransaction.commitNow() to make sure the fragment is added to activity.
recyclerView = (RecyclerView) findViewById(R.id.movies_recycler_view);
recyclerView.setLayoutManager(newLinearLayoutManager(this));
It is not a very good idea to find fragment's view from the activity level. One of the reason is to avoid the situation like you are facing now as fragment content cannot be guaranteed in activity.
The better way is to find and set view content inside the fragment onViewCreated
If your data is get from activity, you can still pass the data to fragment from activity.
See, topics like "communication between fragment and activity" https://developer.android.com/training/basics/fragments/communicating.html
Solution 2:
recyclerView = (RecyclerView) findViewById(R.id.movies_recycler_view);
// The above line doesnot throw null pointer exception, since you can cast null to any object. Refer this post - http://stackoverflow.com/questions/18723596/no-exception-while-type-casting-with-a-null-in-java
recyclerView.setLayoutManager(newLinearLayoutManager(this));
// The above line will throw null pointer exception, since here we are accessing the null object and invoking a method on that null object.Try like this to avoid the null pointer exception
recyclerView = (RecyclerView) findViewById(R.id.movies_recycler_view);
if(recyclerView != null) {
recyclerView.setLayoutManager(new LinearLayoutManager(this));
.....
.....
.....
}
Solution 3:
Either move fragment_home.xml code inside your main.xml file, If you want recyclerView inside your activity. i.e.
main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><FrameLayoutandroid:id="@+id/root"android:layout_width="match_parent"android:layout_height="match_parent" ><android.support.v7.widget.RecyclerViewandroid:id="@+id/movies_recycler_view"android:layout_width="match_parent"android:layout_height="match_parent"android:scrollbars="vertical" /></FrameLayout></LinearLayout>OR
add a Fragment to your activity which inflates fragment_home.xml and move recyclerView initialization code to your fragment. i.e. Below code in your fragment:
recyclerView = (RecyclerView) rootview.findViewById(R.id.movies_recycler_view);
recyclerView.setLayoutManager(newLinearLayoutManager(this));
Post a Comment for "'boolean Android.support.v7.widget.recyclerview$layoutmanager.canscrollvertically()'"