当前位置: 首页 > 知识库问答 >
问题:

android活动中未出现搜索栏

安博文
2023-03-14

我正在用Java开发一个android项目,目前我正在尝试获取一个使用搜索栏并搜索给定条目的活动。我有一个问题,搜索栏根本没有出现,我遵循了多个指南,并搜索了类似的问题,但没有结果,因此我在这里试图找到一个答案。文件:search\u菜单。xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/search"
        android:icon="@drawable/ic_search"
        android:title="Rechercher"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="always|collapseActionView" />
</menu>

activity\u库存。xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".stock">

    <ListView
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />


</LinearLayout>

stock.java:

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;

import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;

public class stock extends AppCompatActivity {

    ListView lv;
    ArrayAdapter<String> adapter;
    SearchView s;
    JSONParser parser = new JSONParser();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_stock);

        lv = findViewById(R.id.list_view);

        List<String> l = new ArrayList<String>();
        l.add("a");
        l.add("b");
        l.add("c");

        adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, l);
        lv.setAdapter(adapter);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.search_menu, menu);

        MenuItem i =  menu.findItem(R.id.search);
        s = (SearchView) i.getActionView();
        s.setQueryHint("Tappez ici pour chercher le code bar");
s.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String s) {
return false;
            }

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

我看不出代码有什么问题,即使我尝试用工具栏做搜索栏仍然没有出现,我已经被困在这里一段时间了,所以真的很感激一些帮助,谢谢!

共有1个答案

白镜
2023-03-14

您正在menu.xml中使用app: actionViewClass="android.widget.SearchView"。但是您正在将其强制转换为stock.java中的androidx.appcompat.widget.SearchView

因此,在menu.xml中使用app: actionViewClass="androidx.appcompat.widget.SearchView"app: show AsAction="ifRoom|崩溃ActionView"

 类似资料:
  • 我得活动: A-Main Activity(类似于登录屏幕),在进入任何其他Activity时finish() C=其他用户内容 当我进入A>B>C,按home,从launcher启动应用程序时,我看到了C与后堆栈恢复的B>C(顶部),这里没有问题 当我转到A>B>C,按home,启动应用程序从谷歌搜索栏在主屏幕上,我看到A,与背面堆栈B>C>A(顶部)。 问题是为什么会发生这种情况,我该如何修复

  • 我有两种型号,App\Song(belongsTo App\Host)和App\Host(有许多App\Song)。 在我的控制器中,我使用以下查询: 这是从mymodel公共函数scopeligable($query) 这不会返回任何结果,请转到

  • 我们在Liferay DXP和Elasticsearch 2.2.0中有一个自定义搜索portlet。我们在elasticsearch设置中为同义词搜索添加了以下设置。 我们还使用以下代码验证是否将同义词分析器添加到索引中。 这给出了synonyms.txt文件中“acl”的所有同义词的结果。但是Liferay搜索不会给搜索匹配同义词。例如:搜索(“acl”)=

  • 我有一个SearchActivity,它来自具有以下代码的搜索菜单项: 在上,搜索活动声明如下: 在搜索活动的< code>onCreate()和< code>onNewIntent()方法中,我处理传入的意图,但是如果我记录查询,无论我更改查询多少次,它只显示启动搜索活动的第一个查询。 我这里有什么遗漏吗?

  • 我编写了这个小型测试应用程序来演示问题,即当用户按下键盘上的搜索按钮时,可搜索的活动未启动。 我一直在关注开发人员指南,但从我的网络搜索中,发现官方开发人员指南遗漏了一些要点。从我的SO搜索(没有帮助): > < li> 参考1:通过在清单的元素中添加标记来解决。我还查看了示例“用户字典”的清单(我不知道在网上哪里可以找到示例,或者我会链接到它)。这个标签在application元素中。 引用2:

  • 所以我尝试在我的应用程序中实现一个搜索功能。我在应用程序栏中添加了一个SearchView,并配置了清单,将意图指向正确的活动。但我有一个特殊的情况:我想在SearchView生成的意图中添加额外的信息,以传递给我的SearchableActivity(在我的例子中是SearchEventsActivity类)。为此,我想让我的MainActivity类成为可搜索的,它可以通过捕捉意图,将额外的信