gpt4 book ai didi

android - 如何根据 firebase 值检查字符串

转载 作者:行者123 更新时间:2023-11-29 19:12:33 24 4
gpt4 key购买 nike

所以我的应用程序中有搜索功能,它可以很好地搜索数据库中的内容。但是当该项目不在我的数据库中时,我会收到一个 fatal error 。

搜索功能有一个 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);

我的按钮点击是在 GetView 函数中处理的这是我点击按钮的代码

 mgoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchapps = msearch.getText().toString().trim();
searchfunction();
InputMethodManager inputManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);

inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
});

06-27 17:51:16.708 2938-2938/com.example.harrops.h20droidapp2 E/UncaughtException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.toLowerCase()' on a null object reference
at com.example.harrops.h20droidapp2.actvities.MainActivity$3.onChildAdded(MainActivity.java:287)
at com.firebase.client.core.ChildEventRegistration.fireEvent(ChildEventRegistration.java:48)
at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45)
at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

06-27 17:51:16.712 2938-3140/com.example.harrops.h20droidapp2 D/FA:记录事件(FE):_ae,Bundle[{_o=crash,_sc=MainActivity,_si=7357998494779803214,时间戳=1498585876708,致命=1}]

最佳答案

getValue文档

An instance of the class passed in, populated with the data from this snapshot, or null if there is no data at this location.

所以添加一个无效检查

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


注意:&&是一个短路运算符,表示在表达式值为假的情况下不会执行if

关于android - 如何根据 firebase 值检查字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44786592/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com