0

As you can see below, I have this Fragment layout from my bottom navigator:

enter image description here

So, when application user click on card item from recycle view, I would like to open another fragment over this Search Fragment. I'm trying to to that, but occurs this error:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: mobhair.com.br, PID: 538
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.support.v7.widget.RecyclerView$ViewHolder.shouldIgnore()' on a null object reference
    at android.support.v7.widget.RecyclerView.findMinMaxChildLayoutPositions(RecyclerView.java:4101)
    at android.support.v7.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3835)

I really don't know which the problem. Sou could you please help me?

Follow what I have done so far:

Search Fragment:

public class SearchFragment extends Fragment {

    private SearchViewAdataper searchViewAdataper;
    private RecyclerView recyclerView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.search_screen_fragment, container, false);
        final ProgressDialog progressDialog = new ProgressDialog(view.getContext());

        Toolbar mToolbar = (Toolbar) view.findViewById(R.id.toolbar);
        mToolbar.setTitleTextColor(Color.WHITE);
        mToolbar.setTitle(R.string.title_search);

        progressDialog.setMessage(getString(R.string.loading_data));
        recyclerView = (RecyclerView) view.findViewById(R.id.search_recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(view.getContext(), LinearLayoutManager.VERTICAL, false));

        SearchManager searchManager = new SearchManager(view.getContext());
        searchManager.getAllProfessions(new SearchServiceListener() {
            @Override
            public void onSuccess(List<SearchDataModel> searchDataModels) {
                searchViewAdataper = new SearchViewAdataper(getContext(), searchDataModels);
                recyclerView.setAdapter(searchViewAdataper);
                progressDialog.dismiss();
            }

            @Override
            public void onFail(Throwable t) {
                progressDialog.dismiss();
                Toast.makeText(getContext(), R.string.communication_server_problem, Toast.LENGTH_LONG).show();
            }
        });

        return view;
    }
}

SearchSectionAdapter adapter: Here it manage all cards items and action click Listener from card item to call a new fragment

NOTE: I will put just setOnClickListener implementation. if necessary all implementation let me know and I can update this question.

holder.mSearchItemImage.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(final View v) {

            ProfessionalManager professionalManager = new ProfessionalManager(v.getContext());
            professionalManager.getAllProfessionalByProfessionDescription(singleItem.getDescription(), new ProfessionalServiceListener() {
                @Override
                public void onSuccess(List<Professional> professionals) {
                    /*Intent intent = new Intent(v.getContext(), ProfessionalListActivity.class);
                    v.getContext().startActivity(intent);*/
                    Fragment fragment = new ProfessionalListFragment();
                    FragmentTransaction ft = ((FragmentActivity)context)
                            .getSupportFragmentManager()
                            .beginTransaction();
                    ft.replace(R.id.search_recyclerView, fragment);
                    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
                    ft.addToBackStack(null);
                    ft.commit();
                }

                @Override
                public void onFail(Throwable t) {

                }
            });
        }
    });
André Vitor
  • 59
  • 1
  • 13

1 Answers1

0

you use recyclerView reference here

recyclerView = (RecyclerView) view.findViewById(R.id.search_recyclerView);

again you use recyclerView to replace by fragment that make Problem

ft.replace(R.id.search_recyclerView, fragment);

you need to <fragment> layout to replace it.

Md Abdul Gafur
  • 6,213
  • 2
  • 27
  • 37