Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference

Quando vou abrir a lista de provas, o sistema fecha e já retorna esse erro:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference at com.softm.agenda2.ListaProvaFragment.onCreateView(ListaProvaFragment.java:38)

Como se tivesse passando um adapter Nulo

 @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.activity_provas, container, false);

        List<String> topicosPort = Arrays.asList("Sujeito", "Objeto Direto", "objeto indireto");
        Prova provaPortugues = new Prova("Português", "29/01/2019", topicosPort);

        List<String> topicosMat = Arrays.asList("Equações 2º Grau", "Trigonometria");
        Prova provaMatematica = new Prova("Matematica", "30/01/2019", topicosMat);

        List<Prova> provas = Arrays.asList(provaPortugues,provaMatematica);
        ArrayAdapter<Prova> adapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_list_item_1, provas);

        ListView lista = (ListView) view.findViewById(R.id.provas_lista);
        lista.setAdapter(adapter);

        lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Prova prova = (Prova) parent.getItemAtPosition(position);
                Toast.makeText(getContext(), "Clicou na prova de " + prova, Toast.LENGTH_LONG).show();
                Intent vaiParaDetalhes = new Intent(getContext(), DetalhesProvaActivity.class);
                vaiParaDetalhes.putExtra("prova", prova);
                startActivity(vaiParaDetalhes);
            }
        });

        return view;
2 respostas
solução!

Olá Francisco

O erro acontece, pois você esta inflando o layout da activity_provas, então quando vai pegar a referência do ListView provas_lista (que esta na fragment_lista_provas), ela não existe nesta activity, então é lançada a exception.

Faça a seguinte alteração, e vai funcionar

View view = inflater.inflate(R.layout.fragment_lista_provas, container, false);

Maravilhoso, era isso mesmo, eu estava tentando corrigir outro erro e acabei mudando esse inflate.

Muito obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software