【问题标题】:use Search View in a fragment's action bar在片段的操作栏中使用搜索视图
【发布时间】:2015-09-24 04:08:24
【问题描述】:

我想在片段的操作栏中使用搜索视图,片段中的代码就像


    @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {


    menu.clear();
    getActivity().getMenuInflater().inflate(R.menu.menu_search, menu);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
        searchView.setIconifiedByDefault(true);
    super.onCreateOptionsMenu(menu, inflater);
}

菜单搜索


<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="com.example.sinyuk.zhihu.Search.SearchResultActivity">
<item
    android:id="@+id/action_search"
    android:orderInCategory="90"
    android:title="@string/action_search"
    android:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="ifRoom"/>


我的活动代码是:


    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_main, menu);
    ...
    return true;
}

menu_main

<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=".MainActivity">
...
<item
    android:id="@+id/action_settings"
    android:orderInCategory="83"
    android:title="@string/action_settings"
    app:showAsAction="never" />

问题是我无法获取搜索视图,它原来是一个空对象。 但是片段中的菜单视图实际上是重新创建的,似乎新菜单没有传递给


 MenuItemCompat.getActionView(menu.findItem(R.id.action_search));

所以请帮助我:P

【问题讨论】:

  • 使用app命名空间app:actionViewClass="android.support.v7.widget.SearchView"
  • 你在片段onCreate()中打电话给setHasOptionsMenu(true)了吗?

标签: android android-fragments android-actionbar searchview


【解决方案1】:

正如克里斯·拉森所说。 您必须将 true 传递给 setHasOptionsMenu();在片段的 onCreate() 中像这样

@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

那么你可以像这样设置你的 onCreateOptionsMenu

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.menu_search, menu);

        MenuItem search = menu.findItem(R.id.action_search);

        sv=(SearchView) MenuItemCompat.getActionView(search);

        super.onCreateOptionsMenu(menu, inflater);
    }

【讨论】:

  • 我想创建一个搜索视图,使用片段在 andorid 应用程序中显示选择 mysql 数据库记录
猜你喜欢
  • 2023-04-06
  • 2018-06-17
  • 2016-11-05
  • 2023-03-16
  • 2023-03-06
  • 2015-10-05
  • 1970-01-01
  • 2015-01-31
相关资源
最近更新 更多