3

我想在我的操作栏中创建一个始终扩展的搜索窗口。我正在使用 ActionBar Sherlock 库。根据我发现的一些示例,这段代码应该可以解决问题

    public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = this.getSupportMenuInflater();
    inflater.inflate(R.menu.action_bar, menu);

    MenuItem searchItem = menu.findItem(R.id.action_bar_search);
    SearchView searchView = (SearchView) searchItem.getActionView();  //returns null
    searchView.setIconifiedByDefault(false);


    return true;
}

然而,getActionView(); 返回空值。是否有其他方法可以访问 searchView,以便我可以调用 setIconifiedByDefault(false); 方法 ?我想在xml文件中保留searchView的定义如下

 <menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@+id/action_bar_search"
          android:title="@string/action_bar_search"
          android:icon="@drawable/ic_magnify"
          android:showAsAction="always"
          android:actionViewClass="android.widget.SearchView" />
    </menu>

谢谢你的帮助

4

2 回答 2

12

您的问题可能与您的 XML 有关。更改android:actionViewClass="android.widget.SearchView"android:actionViewClass="com.actionbarsherlock.widget.SearchView"

于 2012-10-11T10:38:10.707 回答
0

你确定你使用的是正确的R.menu...链接吗?也尝试使用getMenuInflater();而不是getSupportMenuInflater();

于 2012-10-03T14:21:02.703 回答