使用MenuItemCompat获取SearchView(Android)

时间:2013-09-02 14:40:21

标签: android menu android-actionbar searchview

我正在尝试实现SearchView ActionBar项目,因为Android开发人员说,但我遇到了一些麻烦。 (http://developer.android.com/guide/topics/ui/actionbar.html)。

有两个错误虽然我已经找了很多,但我找不到解决方案。

1)我有类MenuItemCompat的问题。它说:     对于MenuItemCompat类型

,方法getActionView(MenuItem)是未定义的

我只能在这个课程中使用以下方法:

  • setShowAsAction(item,actionEnum)
  • setActionView(item,view)

这是代码

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.restloader, menu);
    MenuItem searchItem = menu.findItem(R.id.search_menu);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);       

    // Configure the search info and add any event listeners

    return super.onCreateOptionsMenu(menu);
}

2)这有一个问题: 的xmlns:MyApp的= “http://schemas.android.com/apk/res-auto” 我不明白为什么使用它,但如果谷歌说,它必须是适当的。

错误讯息:      在此行找到多个注释:      - 错误:在包中找不到属性“actionViewClass”的资源标识符      'com.example.pruebahttp3'      - 错误:在包中找不到属性“showAsAction”的资源标识符      'com.example.pruebahttp3'

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myapp="http://schemas.android.com/apk/res-auto" >

<item
    android:id="@+id/search_menu"
    android:orderInCategory="100"
    android:title="@string/search"
    android:icon="@drawable/ic_search_category_default"
    myapp:showAsAction="ifRoom|collapseActionView"
    myapp:actionViewClass="android.support.v7.widget.SearchView">         
</item>

非常感谢!

3 个答案:

答案 0 :(得分:2)

我有同样的问题,我通过使用以下代码解决了它。小心你的命名空间

<!-- Search, should appear as action button -->
<item
    android:id="@+id/action_search"
    android:icon="@drawable/abc_ic_search"
    share:showAsAction="ifRoom"
    share:actionViewClass="android.support.v7.widget.SearchView"
    android:title="@string/abc_searchview_description_search" />

`

答案 1 :(得分:0)

对于第一个:修复第二个将解决这个问题:)

第二名:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:myapp="http://schemas.android.com/apk/res-auto" >

将myapp更改为您的应用程序命名空间com.xxx.xxx

答案 2 :(得分:0)

尝试直接从yourFolder \ sdk \ extras \ android \ support \ v7 \ appcompat \ libs复制lib文件 我有一个类似的问题,但当我直接复制JAR库文件而不是遵循android支持库过程时,它发生在我身上。尝试相反它可能对你有用。 如果你问我,有点奇怪。