gpt4 book ai didi

Android:从 Firebase 读取对象导致应用程序崩溃

转载 作者:搜寻专家 更新时间:2023-11-01 07:45:26 25 4
gpt4 key购买 nike

简介:我正在尝试构建一个显示图书信息的 Android 应用程序(使用 Google 图书 API)。我最近向该应用程序添加了 firebase。此时我可以登录或注册该应用程序,我可以搜索书籍(使用搜索 View )并且我为从查询创建的 ListView 中列出的每本书添加了一个按钮。我将功能添加到按钮它如下:按钮(如果按下)应将当前图书(在 ListView 中)添加到 FireBase。

我的下一步是检索用户在另一个名为 CatalogActivity

的 Activity 中添加的所有图书
public class CatalogActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_catalog);
GridView catalogListView = (GridView) findViewById(R.id.CatalogGridList);

final List<BookObject> books = new ArrayList<BookObject>();

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = database.getReference();
databaseReference.child("books").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Iterable<DataSnapshot> children = dataSnapshot.getChildren();
for (DataSnapshot child : children) {
BookObject book = child.getValue(BookObject.class);
books.add(book);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});

CatalogAdapter catalogAdapter = new CatalogAdapter(this, books);
catalogListView.setAdapter(catalogAdapter);

}
}

为了更好地理解这是 Firebase 数据标签: enter image description here

当我运行该应用程序并单击 CatalogActivity 时,该应用程序崩溃了。

我使用断点调试,得出以下结论:

-正确获取数据库实例和引用

-正确获取所有BookObjects的快照(dataSnapshot)

-第一个子快照(child)被正确获取(无法判断第一本书是否也被添加到books)

- 再次按 F8:应用跳转到循环方法中的 Looper 类,我的应用崩溃

什么可能导致应用程序崩溃?

BookObject 类的要点:BookObject

崩溃日志:

07-31 22:40:38.308 15567-15567/com.example.android.booktrade_v10 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.booktrade_v10, PID: 15567
com.google.firebase.database.DatabaseException: Found two getters or fields with conflicting case sensitivity for property: authors
at com.google.android.gms.internal.zh.zzhe(Unknown Source)
at com.google.android.gms.internal.zh.<init>(Unknown Source)
at com.google.android.gms.internal.zg.zzf(Unknown Source)
at com.google.android.gms.internal.zg.zzb(Unknown Source)
at com.google.android.gms.internal.zg.zza(Unknown Source)
at com.google.firebase.database.DataSnapshot.getValue(Unknown Source)
at com.example.android.booktrade_v10.CatalogActivity$1.onDataChange(CatalogActivity.java:40)
at com.google.android.gms.internal.to.zza(Unknown Source)
at com.google.android.gms.internal.vj.zzHX(Unknown Source)
at com.google.android.gms.internal.vp.run(Unknown Source)
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:6316)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:872)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:762)

非常感谢任何帮助。

最佳答案

您需要做的是将您的文件名称更改为小写,如下所示:

public String title;
public String subtitle;
public String authors;
public String imageURL;
private String pushId;

除此之外,您还需要像这样更改所有的 setter 和 getter:

public String getTitle() {return title;}
public void setTitle(String title) {this.title = title;}

public String getSubtitle() {return subtitle;}
public void setSubtitle(String subtitle) {this.subtitle = subtitle;}

public String getAuthors() {return authors;}
public void setAuthors(String authors) {this.authors = authors;}

public String getImageURL() {return imageURL;}
public void setImageURL(String imageURL) {this.imageURL = imageURL;}

public String getPushId() {return pushId;}
public void setPushId(String pushId) {this.pushId = pushId;}

Cătă,此更改肯定会解决您的问题;)

关于Android:从 Firebase 读取对象导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45423624/

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