L'ajout de SearchView du Fragment
Essayez d'inclure un searchview dans l'actionbar. Pour cela, j'ai effectué les opérations suivantes:
Créé MenuSearch.xml dans le menu dossier comme indiqué ci-dessous:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/action_search"
android:actionViewClass="Android.Support.V7.Widget.SearchView"
android:icon="@android:drawable/ic_menu_search"
android:showAsAction="always"
android:title="Search"/>
</menu>
Inclus la méthode OnCreateOptionsMenu dans le fragment:
public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
{
inflater.Inflate(Resource.Menu.MenuSearch, menu);
base.OnCreateOptionsMenu(menu, inflater);
var searchManager = (SearchManager) this.Activity.GetSystemService(Context.SearchService);
searchView = (SearchView) (menu.FindItem(Resource.Id.action_search).ActionView);
searchView.SetSearchableInfo(searchManager.GetSearchableInfo(Activity.ComponentName));
}
Et j'ai mis HasOptionsMenu = true;
dans oncreate du fragment.
Avec le code ci-dessus, j'obtiens de pointeur null dans la ligne searchView.SetSearchableInfo...
. Pas sûr de savoir pourquoi cela se produit, même si tout semble être correct et en place.
Basé sur des suggestions pour les résoudre problème similaire, j'ai aussi essayé l'option en dessous pour searchview.
var item = menu.FindItem (Resource.Id.action_search);
var searchItem = MenuItemCompat.GetActionView(item);
searchView = searchItem.JavaCast<Android.Support.V7.Widget.SearchView>();
searchView.SetSearchableInfo(searchManager.GetSearchableInfo(Activity.ComponentName));
Mais encore une fois, je reçois searchView comme null.
Maintenant que j'ai essayé toutes les options possibles, je suis paumé pourquoi searchview devient nulle.
Toute aide est très appréciée.
OriginalL'auteur user264953 | 2015-12-15
Vous devez vous connecter pour publier un commentaire.
Changer votre MenuSearch.xml pour
Et dans votre fragment d'ajouter
searchView.setOnQueryTextListener
Je suis l'obtention de ce. Avez-vous réussi à le résoudre?
Votre application style est probablement pas soutenir actionbars. Veuillez vérifier si votre style n'est que.
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_IF_ROOM); MenuItemCompat.setActionView(item, searchView);
Ces deux lignes sont obsolètes veuillez mettre à jour répondre......OriginalL'auteur Pavan Bilagi
Réponse mis à jour pour 2018. Désolé pour Kotlin, si vous êtes à l'aide de Java.
Votre menu xml ressource (search_menu.xml pour exemple):
L'accumulation de code:
Vous aurez probablement aussi besoin de mettre cette ligne dans
onCreate()
(qui a travaillé pour mon fragment) pour obtenir tout cela à apparaître:OriginalL'auteur Aqluse
j'ai résolu ce problème, je souhaite partager ma réponse pour searchView NullPointerException
nous avons besoin de retirer la méthode ci-dessous à partir de l'Activité Principale
et de l'utiliser à l'intérieur d'un fragment dans OnActivityCreated
setHasOptionsMenu(true)
et de Remplacer les méthodes
OriginalL'auteur Dinesh
Votre search_options_menu.xml devrait ressembler à ceci:
Remplacer onCreateOptionMenu méthode dans votre fragment
setHasOptionsMenu(true);
à l'intérieur de onCreate() sur votre fragment.OriginalL'auteur Queendevelopers
Pour la fin de 2018 et pour les api >=
26
compatible (dépréciation mises en garde) et une mise en forme correctement réponse:La
menu.xml
:Code Java à l'intérieur de la
ActivityFragment
:OU comme un deuxième option vous laissez le
ActivityFragment
mettre en œuvreSearchView.OnQueryTextListener
et d'utiliser le menu de recherche:OriginalL'auteur Tanasis
Dans mon fragment de la onCreateOptionsMenu le code
produite message d'erreur suivant:
java.lang.NullPointerException: Tentative d'invoquer la méthode virtuelle " void android.de soutien.v7.widget de.SearchView.setSearchableInfo (android.app.SearchableInfo) " sur un objet null référence
Après j'ai changé dans menu.xml android:actionViewClass app:actionViewClass le problème ne se reproduise pas.
menu.xml :
OriginalL'auteur Kees