[英]How to intent to other activity when icon search clicked
我有问题,我在工具栏上使用图标搜索,我想单击此图标搜索,它将移动到新活动并在此处展开editview搜索,但是我的代码无法实现
我的课(首次活动):
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_menu_icon_toolbar, menu);
// Retrieve the SearchView and plug it into SearchManager
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
if(item.getItemId()==R.id.action_search){
Intent i = new Intent(this,SearchCarActivity.class);
startActivity(i);
return true;
}
return super.onOptionsItemSelected(item);
}
我的layout_activity:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!-- NavigationDrawer Menu -->
<item android:id="@+id/action_search"
android:title="Search"
app:showAsAction="always"
android:icon="@drawable/ic_action_name_search"
app:actionViewClass="android.support.v7.widget.SearchView"
/>
</menu>
我的搜索活动(第二个活动):
public class SearchCarActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.search_car_menu, menu);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
searchView.setIconified(false);
return super.onCreateOptionsMenu(menu);
}
}
我的search_car_menu.xml:
<?xml version="1.0" encoding="utf-8"?>
<item
android:id="@+id/search"
android:icon="@android:drawable/ic_menu_search"
android:title="Search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"/>
它不会移至第二项活动,但似乎在第一项活动中仍能达到目标
单击工具栏上的图标搜索时,如何才能转到第二项活动?
谢谢
我创建了一个测试项目,并在您说的第一个活动中单击搜索图标后添加了您的代码,然后打开第二个活动并在那里进行搜索
从您的layout_activity中删除这一行就可以了:
app:actionViewClass="android.support.v7.widget.SearchView"
当您添加该行时,您的项目将表现为SearchView,甚至不会响应
public boolean onOptionsItemSelected(MenuItem item)
一种解决方案是在相同的活动中执行此操作。
设置输入查询文本的侦听器
searchView.setOnQueryTextListener(MyActivity.this);
并使用此接口SearchView.OnQueryTextListener
实现MyActivity
该接口提供2个回调方法:
@Override
public boolean onQueryTextSubmit(String query) {
//get this query and search on server
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
希望这对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.