gpt4 book ai didi

android - 无法在 fragment 中转换 SearchView (AppCompat)

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:30 25 4
gpt4 key购买 nike

我正在尝试从 Fragment 中监听 SearchView 中的文本更改,但在这一行失败了:menu.findItem(R.id.action_search);

异常(exception):

        java.lang.ClassCastException: android.support.v7.internal.view.menu.MenuItemWrapperJB cannot be cast to android.support.v7.widget.SearchView
at se.xxx.xxx.FragmentList.onCreateOptionsMenu(FragmentList.java:155)

我的 onCreateOptionsMenu(在 fragment 中):

     @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.main, menu);
SearchView sv = (SearchView) menu.findItem(R.id.action_search); //crashes here

sv.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}

@Override
public boolean onQueryTextChange(String s) {
adapter.getFilter().filter(s.toString());
return false;
}
});
}

菜单布局 xml (main.xml):

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="se.xxx.xxx.MainActivity" >

<item
app:actionViewClass="android.support.v7.widget.SearchView"
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
android:title="blabla"
app:showAsAction="always"
/>

最佳答案

在 AppCompat 库中转换 SearchView 的正确方法:

MenuItem menuItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menuItem);

关于android - 无法在 fragment 中转换 SearchView (AppCompat),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22150885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com