Sto aggiornando la mia app utilizzando tutti i temi di AppCompat. Ho un nullpointer qui:NullPointerException su SearchView utilizzando AppCompat in Android 5.0
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
MenuItem searchItem = menu.findItem(R.id.menu_search);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
setupNewSearchView(searchItem, searchManager);
return true;
}
private void setupNewSearchView(final MenuItem searchItem,
SearchManager searchManager) {
final SearchView searchView = (SearchView) searchItem.getActionView();
// Null at line below
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
// Everything else below edited out
}
Qui sono le mie importazioni principali:
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.SearchView;
Ho ragione nel pensare questa linea deve cambiare durante l'aggiornamento a AppCompat
?
final SearchView searchView = (SearchView) searchItem.getActionView();
UPDATE:
ho cambiato in questo
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
Con lo stesso risultato nullo ...
AGGIORNAMENTO - ADD XML
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_search"
app:actionViewClass="android.support.v7.widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always"
android:title="search" />
<item
</menu>
LogCat:
10-24 11:49:07.040: E/AndroidRuntime(4846): java.lang.NullPointerException
10-24 11:49:07.040: E/AndroidRuntime(4846): at com.---.---.MainFragmentActivity.setupNewSearchView(MainFragmentActivity.java:1300)
10-24 11:49:07.040: E/AndroidRuntime(4846): at com.---.---.MainFragmentActivity.onCreateOptionsMenu(MainFragmentActivity.java:1292)
10-24 11:49:07.040: E/AndroidRuntime(4846): at android.app.Activity.onCreatePanelMenu(Activity.java:2538)
10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:275)
10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:276)
10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v7.app.ActionBarActivityDelegate$1.onCreatePanelMenu(ActionBarActivityDelegate.java:79)
10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v7.app.ActionBarActivityDelegateBase.preparePanel(ActionBarActivityDelegateBase.java:1056)
10-24 11:49:07.040: E/AndroidRuntime(4846): at android.support.v7.app.ActionBarActivityDelegateBase.doInvalidatePanelMenu(ActionBarActivityDelegateBase.java:1259)
Aggiungere codice XML del vostro menu. – Simas