Я использую меню ActionBar как:Xamarin Android: ActionBar SearchView ActionView возвращает нуль
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/menu_search"
android:actionViewClass="com.abc.AppSearchView"
android:icon="@drawable/ic_menu_search"
android:showAsAction="always|collapseActionView" />
</menu>
Тогда я надуть его и:
public override bool OnCreateOptionsMenu (IMenu menu)
{
MenuInflater.Inflate (Resource.Menu.actionMenu, menu);
_actionBarMenu = menu;
// Get the SearchView and set the searchable configuration
var searchManager = (SearchManager)GetSystemService (SearchService);
var searchMenuItem = menu.FindItem (Resource.Id.menu_search);
var searchView = (AppSearchView)searchMenuItem.ActionView;
// Assumes current activity is the searchable activity
searchView.SetSearchableInfo (searchManager.GetSearchableInfo (ComponentName));
searchView.SetSearchViewListener (this);
return base.OnCreateOptionsMenu (menu);
}
У меня есть пользовательский поиск Просмотр реализации:
public class AppSearchView : SearchView
{
private IAppSearchViewListener mListener;
public AppSearchView (Context ctxt) : base (ctxt)
{
}
public override void OnActionViewCollapsed()
{
if (mListener != null)
mListener.OnSearchViewCollapsed (this);
base.OnActionViewCollapsed();
}
public override void OnActionViewExpanded()
{
if (mListener != null)
mListener.OnSearchViewExpanded (this);
base.OnActionViewExpanded();
}
public interface IAppSearchViewListener
{
void OnSearchViewCollapsed (SearchView sView);
void OnSearchViewExpanded (SearchView sView);
}
public void SetSearchViewListener (IAppSearchViewListener listener)
{
mListener = listener;
}
}
searchMenuItem.ActionView
is null (Следовательно, поиск имеет значение null). Но этот же код работает в другом приложении, которое у меня есть. Оба приложения используют Xamarin.Android.Support.v13
. Кроме того, если я использую android.widget.SearchView
, он отлично работает и ActionView
не имеет значения. Может ли кто-то пролить некоторый свет на то же самое?
Фактически свойство ActionView равно NULL для пункта меню поиска. Поэтому использование JavaCast здесь не полезно. Кроме того, я не использую MenuItemCompat, так как поддерживаю устройства выше Android 4.0. Вы думаете, что это изменило бы ситуацию? –
Читать редактирование :) – Cheesebaron