In my child snippet, I have a Recyclerview, and I saved the Appbar layout in my parent snippet. When the first Recyclerview element is visible, I need to update the app bar layout in the parent fragment
My interface
public interface OnListFirstItemVisibleListener {
public void sendDataToFragmentOnFirstItemVisible(boolean data, int dy);
}
in the class of the children's fragment
public class MyChildFragment extends Fragment{
private OnListFirstItemVisibleListener mListFirstItemVisibleListener;
.............
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mListFirstItemVisibleListener=(OnListFirstItemVisibleListener) new ParentFragment();
return view;
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if(mLinearLayoutManager.findFirstCompletelyVisibleItemPosition()==0&&mListFirstItemVisibleListener != null){
mListFirstItemVisibleListener.sendDataToFragmentOnFirstItemVisible(true,dy);
}else{
mListFirstItemVisibleListener.sendDataToFragmentOnFirstItemVisible(false,dy);
}
}
In the parent fragment class
I implemented an interface
public class MyParentFragment extends Fragment implements OnListFirstItemVisibleListener{
............
@Override
public void sendDataToFragmentOnFirstItemVisible(boolean data, int dy) {
if (dy < 0&&data==true)
mAppBarLayout.setExpanded(true);
}
}
But I get the Appbar layout as null
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.design.widget.AppBarLayout.setExpanded(boolean)' on a null object
Where am I going wrong?
source
share