Android 如何对照firebase值检查字符串

Android 如何对照firebase值检查字符串,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,因此,我的应用程序中有搜索功能,它可以很好地用于数据库中的内容。但是,当项目不在我的数据库中时,我会得到一个致命错误 搜索函数有一个edittext按钮,当按钮被触发时,它会检查数据库中是否有对edittext的引用 这是我的密码 public void searchfunction() { mArraylist.clear(); final ChildEventListener msearchevent = new ChildEventListener() {

因此,我的应用程序中有搜索功能,它可以很好地用于数据库中的内容。但是,当项目不在我的数据库中时,我会得到一个致命错误

搜索函数有一个edittext按钮,当按钮被触发时,它会检查数据库中是否有对edittext的引用

这是我的密码

    public void searchfunction() {
    mArraylist.clear();
    final ChildEventListener msearchevent = new ChildEventListener() {

        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {

            String msearchname = dataSnapshot.child("name").getValue(String.class);

            final String url = dataSnapshot.child("url").getValue(String.class);

            if (msearchname.toLowerCase().contains(searchapps.toLowerCase())) {
                marrayAdapter2 = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, mArraylist);
                mlv.setAdapter(marrayAdapter2);

                mArraylist.add(msearchname);
                mArraylist2.add(url);
                marrayAdapter2.notifyDataSetChanged();
                mlv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        DownloadFileFromURL dl = new DownloadFileFromURL(mContext, apkNames, mCurrentPhotoPath);
                        dl.execute(mArraylist2.get(position));
                    }
                });

            }else {
                Toast.makeText(MainActivity.this, "No results found!",Toast.LENGTH_SHORT).show();
            }

        }


        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
            marrayAdapter2.notifyDataSetChanged();

        }

        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
            marrayAdapter2.notifyDataSetChanged();
        }

        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
            marrayAdapter2.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {
            marrayAdapter2.notifyDataSetChanged();
        }
    };
    mListRef.child("Filmapps").addChildEventListener(msearchevent);
06-27 17:51:16.712 2938-3140/com.example.harrops.h20droidapp2 D/FA:日志事件(FE):\u ae,Bundle[{{u o=crash,\u sc=MainActivity,\u si=7357998494779803214,时间戳=149858767708,fatal=1}]

docs

传入的类的实例,由来自此 快照,如果此位置没有数据,则
null。

所以添加一个空性检查

    if (msearchname!=null && url!=null && msearchname.toLowerCase().contains(searchapps.toLowerCase())) {


注意:
&&
是一个短路运算符,如果出现任何错误的表达式值,mean将不会执行

发布错误。错误是什么?似乎是Nullpointer,
msearchname
url
为null,可能两者都为null,请检查其字符串null错误。但是,只有当这个项目不在我的数据库中时,我很高兴我能提供帮助,快乐地编码
    if (msearchname!=null && url!=null && msearchname.toLowerCase().contains(searchapps.toLowerCase())) {