来自 Firebase 的 RecyclerView 图像无法加载三个活动中的一个 [重复]
Posted
技术标签:
【中文标题】来自 Firebase 的 RecyclerView 图像无法加载三个活动中的一个 [重复]【英文标题】:RecyclerView image from Firebase fails to load for one activity out of three [duplicate] 【发布时间】:2021-10-21 05:13:52 【问题描述】:我有一个调用 3 个活动的 MainActivity -
公共类 MainActivity 扩展 AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_choose_main);
CardView c1 = findViewById(R.id.card1);
c1.setOnClickListener(view -> startActivity(new Intent(this, QuoteActivity.class)));
CardView c2 = findViewById(R.id.card2);
c2.setOnClickListener(view -> startActivity(new Intent(this, ReadingActivity.class)));
CardView c3 = findViewById(R.id.card3);
c3.setOnClickListener(view -> startActivity(new Intent(this,MotivationActivity.class)));
.....
所有 3 个活动都使用 RecyclerView.Adapter 从 Firebase 存储加载图像和文本。 问题是 3 个活动之一的任意图像加载失败,并出现以下错误 -
I/FIAM.Display:绑定到活动:FirebaseLibrary.ReadingActivity I/FIAM.Headless:设置显示事件组件 W/RecyclerView:没有附加适配器;跳过布局 V/FA:不活动,与服务断开连接
哪个活动不起作用是绝对随机的。如果我删除一项活动,则剩余 2 项中的一项将失败。使用断点,我可以看到它没有进入 onDataChange -
private void GetDataFromFirebase()
Query query = myref.child("quote");
query.addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot)
ClearAll();
ArrayList<Messages> randommessagesList = new ArrayList<>();
for(DataSnapshot snapshot1 : dataSnapshot.getChildren())
Messages messages = new Messages();
messages.setImageUrl(Objects.requireNonNull(snapshot1.child("image").getValue()).toString());
messages.setName(Objects.requireNonNull(snapshot1.child("name").getValue()).toString());
messagesList.add(messages);
int messagesCount = messagesList.size();
int randomNumber = new Random().nextInt(messagesCount);
randommessagesList.add(messagesList.get(randomNumber));
recyclerAdapter = new RecyclerAdapter(getApplicationContext(), randommessagesList);
quoterecyclerview.setAdapter(recyclerAdapter);
recyclerAdapter.notifyDataSetChanged();
@Override
public void onCancelled(@NonNull DatabaseError error)
);
有什么帮助吗?
已解决: 正如我所料,问题出在 Firebase 中仍处于 Beta 版的新应用检查器上。使用 Playstore 发布的应用程序可以访问 Firebase,但在通过 android Studio 安装以进行测试时出现问题。刚刚删除了用于测试的应用检查初始化...
【问题讨论】:
您担心“未连接适配器;跳过布局”? 是的。不知道为什么它会随机发生在 3 个活动中。 您不应该在后台线程中设置适配器。请检查重复的 tp 看看如何解决这个问题。 你是对的。如果这样做,我看不到错误,但页面是空白的。我真的不怀疑活动中的代码可以正常工作。我已将相同的代码复制到 3 个活动中。问题在于每次执行时它随机只适用于 2 个活动。对于另一个执行,甚至没有输入 onDataChange。 OnDataChange 方法在主线程上运行。也许问题出在查询火上 【参考方案1】:W/RecyclerView: No adapter attached; skipping layout
也许这行显示了一个问题。你确定你已经正确设置了回收器视图适配器吗?
【讨论】:
是的。因为所有 3 项活动都很少执行。因此,在一次执行中,只有其中 2 个随机工作。不知道为什么只有一个(三个中的任何一个)不起作用。 你能添加更多代码吗 谢谢 .... 您能否更具体地说明代码的哪一部分会有所帮助? 调试应用时这个代码块会运行吗? 没有。流未进入“onDataChange”。以上是关于来自 Firebase 的 RecyclerView 图像无法加载三个活动中的一个 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
接收来自两个 Firebase 项目的一个 Android 应用的推送通知