erro NullPointerException no SearchView

  • Respostas:0
Danilo Moreira
  • Posts no fórum: 2

09/01/2017, 12:07:10 via Web

Olá Eu estou com um problema no meu código, o erro é NullPointerException, mais não consigo entender o erro, veja o q fiz.

este é o erro.
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at br.com.mdvisual.transitosm.fragment.FragmentNoticia.onCreateOptionsMenu(FragmentNoticia.java:77)
at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:2059)
at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:2118)
at android.support.v4.app.Fragment.performCreateOptionsMenu(Fragment.java:2062)
at android.support.v4.app.FragmentManagerImpl.dispatchCreateOptionsMenu(FragmentManager.java:2118)
at android.support.v4.app.FragmentController.dispatchCreateOptionsMenu(FragmentController.java:279)
at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:341)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:85)
at android.support.v7.app.AppCompatDelegateImplBase$AppCompatWindowCallbackBase.onCreatePanelMenu(AppCompatDelegateImplBase.java:258)
at android.support.v7.view.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:85)
at android.support.v7.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:454)
at android.support.v7.app.ToolbarActionBar$1.run(ToolbarActionBar.java:61)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:791)
at android.view.Choreographer.doCallbacks(Choreographer.java:591)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:777)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5302)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
at dalvik.system.NativeStart.main(Native Method)

O que eu fiz


xmlns:app="...">

<item
    android:id="@+id/search"
    android:title="Busca"
    android:icon="@drawable/lupa"
    app:showAsAction="always|collapseActionView"
    android:actionViewClass="android.support.v7.widget.SearchView"

    />

Dentro da classe fragmento de notícia aonde estou colocando a pesquisa.
package br.com.mdvisual.transitosm.fragment;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;

import java.util.ArrayList;
import java.util.List;

import br.com.mdvisual.transitosm.R;
import br.com.mdvisual.transitosm.adapter.NoticiasAdapter;
import br.com.mdvisual.transitosm.modelo.Noticia;

/**
* A simple {@link Fragment} subclass.
*/
public class FragmentNoticia extends Fragment {

RecyclerView recyclerView;
List<Noticia> listaNoticia;
NoticiasAdapter noticiasAdapter;

ProgressBar progressBar;


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


    View v = inflater.inflate(R.layout.fragment__noticia, container, false);

    setHasOptionsMenu(true);

    recyclerView = (RecyclerView) v.findViewById(R.id.recycle_view);
    progressBar = (ProgressBar) v.findViewById(R.id.progressbar);

    listaNoticia = new ArrayList<Noticia>();
    listaNoticia.add(new Noticia("AUXÍLIO DIDÁTICO PARA AUTOESCOLAS",R.drawable.cursodidatico,"30/11/2016"));
    listaNoticia.add(new Noticia("CURSO DE PRIMEIROS SOCORROS",R.drawable.socorros,"30/11/2016"));
    listaNoticia.add(new Noticia("DEFESAS E RECURSOS DE MULTAS",R.drawable.recursos,"30/11/2016"));
    listaNoticia.add(new Noticia("MONITORAMENTO DE FROTAS POR CÂMERAS",R.drawable.rastreio,"30/11/2016"));
    listaNoticia.add(new Noticia("TREINAMENTO PARA MOTORISTAS DE EMPRESAS",R.drawable.treinamento,"30/11/2016"));
    listaNoticia.add(new Noticia("TREINAMENTO PARA HABILITADOS",R.drawable.treinamento_motorista,"30/11/2016"));

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());

    noticiasAdapter = new NoticiasAdapter(getActivity(),listaNoticia);
    recyclerView.setAdapter(noticiasAdapter);

    return v;
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);

    inflater.inflate(R.menu.search,menu);
    final SearchView searchView = (SearchView)MenuItemCompat.getActionView(menu.findItem(R.id.search));
    final MenuItem searchMenuItem = menu.findItem(R.id.search);

 searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
     @Override
     public void onFocusChange(View view, boolean b) {
         if (!b){
             searchMenuItem.collapseActionView();
             searchView.setQuery("",false);
         }
     }
 });

}

}

Responder