- Posts no fórum: 2
09/01/2017, 12:07:10 via Web
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);
}
}
});
}
}