在ActionBar中访问actionView

时间:2012-10-03 14:07:11

标签: android android-actionbar actionbarsherlock

我想在操作栏中创建一个始终扩展的搜索窗口。我正在使用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();返回null。 是否有其他方法可以访问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>

感谢您的帮助

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:0)

您确定使用的是正确的R.menu...链接吗?另请尝试使用getMenuInflater();代替getSupportMenuInflater();