继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

ActionBar中添加搜索框( search )及遇到的空指针问题

万千封印
关注TA
已关注
手记 90
粉丝 13
获赞 64

在这几天的开发学习中,看到一个需求,就是要在导航栏中添加搜索框,于是乎就各种查资料,学习以及使用.

导航栏有两种实现方式,一种是用ActionBar,另一种是用ToolBar.(我在这里是用的ActionBar)

添加的方法;

简单说一下 showAsAction的其他属性,如果设置成never的话,菜单栏上就有三个竖直的小白点菜单

alaways:一直显示在溢出菜单外

ifRoom:溢出菜单外如果有空间,就显示在溢出菜单外

never:一直显示在溢出菜单内

自己设置看下效果就立刻懂了

在activity中的代码如下

[代码]java代码:

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

@Override

    public boolean onCreateOptionsMenu(Menu   menu) {

        getMenuInflater().inflate(R.menu.menu,   menu);

        // 获得menu中指定的菜单项

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

        // 获得菜单项中的SearchView

        SearchView   searchView = (SearchView) item.getActionView();

        // 为searchView添加事件

        searchView.setOnQueryTextListener(new   SearchView.OnQueryTextListener() {

            @Override

            //   输入后点击回车改变文本 

            public   boolean onQueryTextSubmit(String query) {

                return   false;

            }

            @Override

            //   随着输入改变文本

            public   boolean onQueryTextChange(String newText) {

                return   false;

            }

        });

        return true;

    }

 

SearchView组件的其他常用方法如下:

 

①setIconifiedByDefault(boolean iconified) ===> 设置搜索框默认是否自动缩小为图标。

②setOnQueryTextListener(SearchView,OnQueryTextListener listener) ===> 为搜索框设置监听器

③setSubmitButtonEnabled(boolean enabled) ===> 设置是否显示搜索按钮

④setQueryHint(CharSequence hint) ===> 设置搜索框内的默认显示的提示文本

 

做到这一步,搜索框基本就出来.,谈一下笔者遇到的空指针问题

笔者在这边运行了三次,每次都是空指针,用了好几种方法都是能确定了空指针的变量,却不知道该怎么解决.

于是乎又找度娘寻答案去了,终于给我找到了.

原因就是在menu布局中不正确使用V7包

常规的写法;android:actionViewClass="android.support.v7.widget.SearchView"

正确的写法;app:actionViewClass="android.support.v7.widget.SearchView"

命名空间采用;xmlns:app="http://schemas.android.com/apk/res-auto"

这样问题就解决了!

原文链接:http://www.apkbus.com/blog-862846-62463.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP