我正在用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;
}
我看不出代码有什么问题,即使我尝试用工具栏做搜索栏仍然没有出现,我已经被困在这里一段时间了,所以真的很感激一些帮助,谢谢!
您正在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类成为可搜索的,它可以通过捕捉意图,将额外的信