我已经开始乱用碎片,因为我在平板电脑上的应用可能会更有效地使用空间。FragmentActivity中的SearchView(支持)始终为空
现在,在我的旧应用程序中,我在操作栏菜单中有一个SearchView,它会显示在ifRoom上。我使用相同的代码,但现在SearchView项目始终为空。我不想根据活动片段或其他方式更改菜单项,我只需要使用SearchView在FragmentActivity中运行。
FragmentActivity:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.main, menu);
MenuItem searchItem = menu.findItem(R.id.svPet);
this.svPet = (SearchView)MenuItemCompat.getActionView(searchItem);
if(this.svPet != null)
{
this.svPet.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
this.svPet.setOnQueryTextListener(this);
}
return true;
}
的main.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/svPet"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="ifRoom"
android:title="@string/search"
android:titleCondensed="@string/search">
</item>
...Some more items that are never shown as action and work correctly
</menu>
所以,当正在创建菜单,this.svPet保持为空,则搜索查看未在栏中显示(即使有足够的空间),当我点击菜单项时,我的应用程序崩溃,说有一个空指针
this.svPet.setIconified(false);
in
@Override
public boolean onOptionsItemSelected(MenuItem item)
关于什么可能是错误的任何想法?我可能忽略了一些东西,但目前我看不出什么问题。感谢提前:)
你有xml可搜索配置吗? – pskink 2014-09-12 18:58:32
我不明白为什么我会需要它,因为它以前一直没有它,一直都很漂亮。使用FragmentActivity时它是强制性的吗? – Tregan 2014-09-13 09:38:51
不,它不是强制性的,但我认为一些破损的可搜索文件可能导致空SearchView,顺便说一句“searchItem”有效? – pskink 2014-09-13 09:50:57