点击android搜索框跳入另一个页面,android - ToolBar中的SearchView如何让点击之后跳转到一个新的Activity...

PHP中文网2017-04-17 13:08:302楼

@李引证 的回答包括了关键信息,我来补充一些细节,及纠正几个细节上的错误。

关于“菜单项的点击事件”

我们需要覆写 onCreateOptionsMenu 来初始化Activity/Fragment的选项菜单。

Android同时提供了另一个方法 onOptionsItemSelected(),该方法在菜单项被点击时调用,在这里处理菜单项的点击事件。所以一般不会在 onCreateOptionsMenu 为某个item实现其callback.

需要纠正的是,MenuItem没有setClickListener,而是MenuItem.setOnMenuItemClickListener.

所以,我们一般这样去做:

@Override

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.menu_start_search_activity, menu);

return super.onCreateOptionsMenu(menu);

}

@Override

public boolean onMenuItemSelected(int featureId, MenuItem item) {

switch (item.getItemId()) {

case R.id.menu_item_search:

startActivity(new Intent(StartSearchActivity.this, PhotoGalleryActivity.class));

return true;

}

return super.onMenuItemSelected(featureId, item);

}

关于“点击SearchView后跳转到一个新的Activity”

当我们想为一个activity添加搜索框(换句话说就是点击action bar menu item,然后在action bar上弹出搜索框),一般做法是把该activity(也就是包含了search menu item的activity)配置为可搜索,然后再实现相应的方法。

根据menu item是否配置了android:actionViewClass="android.widget.SearchView",相应的方法(onCreateOptionsMenu, onOptionsItemSelected)在实现上有些差别。

结果上也有差别,前者是在action bar上覆盖一个搜索对话框,后者具有和应用完全一致的样式和主题,如下图:

d53c4f8ede715e4601c8b20012c7d0eb.png

所以,如果你想点击SearchView后跳转到一个新的Activity,就像微信搜索框的效果。

需要这样做:

首先配置这个新的Activity为可搜索的Activity,并实现其相应的方法;

参考 (1)配置一个Searchable Activity;发起搜索请求;在onNewIntent中处理search intent;(2)使用SearchView作为search menu item的指定视图。

然后为某一个Activity添加MenuItem,在Item的点击事件中(参考上述:关于“菜单项的点击事件”),启动上面配置的activity;

所以,需要纠正的是,这个item就是普通的item,不是具有SearchView视图的item,你的问题表述在这一点上是错误的。参考 启动一个可搜索的Activity;启动一个可搜索的activity,通过MenuItem。

同时要注意,需要调用searchView.setIconifiedByDefault(false),这样启动的这个可搜索的activity的searchView才是展开的,如下GIF效果:

1ff138e7aac3af7afb88812d8e2b207e.gif

Done :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值