Почему RecyclerView null?

496
13 января 2017, 08:33

Код фрагмента:

public class ResultsFragment extends Fragment {
    private String id;
    private RecyclerView recyclerView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_results, container, false);
        ActivityFragments activityFragments = (ActivityFragments) getActivity();
        id = activityFragments.getMyData();

       // AllResultPresenter allResultPresenter = new AllResultPresenter(id,ResultsFragment.this);  
        return view;
    }
    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
       // super.onViewCreated(view, savedInstanceState);
        recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view_all);
        recyclerView.setHasFixedSize(true);
        final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(linearLayoutManager);
        AllResultPresenter allResultPresenter = new AllResultPresenter(id,ResultsFragment.this);
    }
    public void showAllResult(ArrayList<Result> allResultResponses) {
        recyclerView.setAdapter(new AllResultsAdapter(this, allResultResponses));
    }
}

А вот код Presenter:

public class AllResultPresenter {
    private ResultsFragment resultsFragment;
    private ArrayList<Result> results;
    private String id;
    public AllResultPresenter(String mId, final ResultsFragment mResultsFragment) {
        this.id = mId;
        this.resultsFragment = mResultsFragment;
        results = new ArrayList<>();   
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("https://asthmacare.ru/")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        retrofit.create(API.class).getAllResultResponse(id).enqueue(new Callback<AllResultResponse>() {
            @Override
            public void onResponse(Call<AllResultResponse> call, Response<AllResultResponse> response) {
                //ArrayList<allRes>  = response.body().getResults();
               results = response.body().getResults();
                resultsFragment.showAllResult(results); 
               }
            @Override
            public void onFailure(Call<AllResultResponse> call, Throwable t) {
            }    
        });
    }
}    

Почему-то вылетает ошибка:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.RecyclerView.setHasFixedSize(boolean)' on a null object reference

Answer 1

Во первых делать recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view_all); лучше в onCreateView. И раз он не находит вьюшку значит нужно проверить id этого RecyclerView в R.layout.fragment_results.

READ ALSO
Как отобразить команду &ldquo;tasklist&rdquo; window в окне JavaFX [требует правки]

Как отобразить команду “tasklist” window в окне JavaFX [требует правки]

Нужно написать программу которая сможет отобразить все данные которые выводит команда tasklist в окно JavaFX и потом иметь возможность сохранить...

315
Возведение в степень + процент

Возведение в степень + процент

Пишу калькулятор на андроид, но не получается сделать функцию процента и возведения в степень (любого числа к любому), так как после нажатия...

392
Отключение панели Java Swing

Отключение панели Java Swing

Доброго времени сутокСтолкнулся со следующей проблемой:

378
Создание epg тв программы

Создание epg тв программы

ЗдравствуйтеНеобходимо в свою программу добавить поддержку вывода тв программы в формате epg

585