热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

FirebaseAndroid应用在检索数据时崩溃-FirebaseAndroidappcrashwhenretrievingdata

Iamsuccessfullysavedatatofirebasethroughmyappbutiamfaceproblemtoretrievefirebaseda

I am successfully save data to firebase through my app but i am face problem to retrieve firebase database data when app start with blank and immediately crash whiteout any log errors. I search lot but no use and also i changed firebase rules public but no use here is my code please help me here is MainActivity

我通过我的应用程序成功地将数据保存到firebase,但是当应用程序以空白开始并立即崩溃whiteout任何日志错误时,我面临检测firebase数据库数据的问题。我搜索很多,但没有用,我也改变了公开的firebase规则,但这里没有用我的代码,请帮助我这里是MainActivity

dependencies {
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:27.0.2'
    compile 'com.android.support:design:27.0.2'
    compile 'com.android.support:cardview-v7:27.0.2'
    compile 'com.android.support:recyclerview-v7:27.0.2'
    compile 'com.android.support:support-v4:27.0.1-alpha1'
    compile 'com.google.firebase:firebase-database:11.0.4'
    compile 'com.google.firebase:firebase-auth:11.0.4'
    compile 'com.facebook.android:facebook-share:4.30.0'
    compile 'com.facebook.android:facebook-login:4.30.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.firebaseui:firebase-ui-database:0.4.0'
    testCompile 'junit:junit:4.12'
}
package com.jogiprasadpakki.firebaseapp;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.firebase.client.Firebase;
import com.firebase.ui.database.FirebaseRecyclerAdapter;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.jogiprasadpakki.firebaseapp.classes.Users;

public class Mainactivity extends AppCompatActivity {

    private RecyclerView recyclerView;
    private FirebaseDatabase firebase;
    private DatabaseReference dataReference;


    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        firebase = FirebaseDatabase.getInstance();
        dataReference = firebase.getReference().child("Users");



        recyclerView = (RecyclerView)findViewById(R.id.story_adapter);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
    }

    @Override
    protected void onStart() {
        super.onStart();

        FirebaseRecyclerAdapter firebaseRecyclerAdapter = new FirebaseRecyclerAdapter(
                Userstories.class,
                R.layout.single_post_row,
                BlogViewHolder.class,
                dataReference

        ) {
            @Override
            protected void populateViewHolder(BlogViewHolder viewHolder, Users model, int position) {
                viewHolder.setNameText(model.getName());
                viewHolder.setProfession(model.getprofession());
            }
        };

        recyclerView.setAdapter(firebaseRecyclerAdapter);
    }


    public static class BlogViewHolder extends RecyclerView.ViewHolder {

        View view;
        public BlogViewHolder(View itemView) {
            super(itemView);
            view = itemView;
        }

        public  void setNameText(String title){
            TextView Title = (TextView)view.findViewById(R.id.txt_title);
            Title.setText(title);
        }
        public void setProfession(String Story){
            TextView story = (TextView)view.findViewById(R.id.txt_story);
            story.setText(Story);
        }

    }

}

Logcat

logcat的

02-02 10:01:15.297 10570-10570/com.jogiprasadpakki.firebaseapp I/FA: App measurement is starting up, version: 11020
02-02 10:01:15.297 10570-10570/com.jogiprasadpakki.firebaseapp I/FA: To enable debug logging run: adb shell setprop log.tag.FA VERBOSE
02-02 10:01:15.357 10570-10570/com.jogiprasadpakki.firebaseapp V/FA: Collection enabled
02-02 10:01:15.357 10570-10570/com.jogiprasadpakki.firebaseapp V/FA: App package, google app id: com.jogiprasadpakki.firebaseapp, 1:462629035094:android:dfe6370866bf9591
02-02 10:01:15.357 10570-10570/com.jogiprasadpakki.firebaseapp I/FA: To enable faster debug mode event logging run:
                                                                    adb shell setprop debug.firebase.analytics.app com.jogiprasadpakki.firebaseapp
02-02 10:01:15.357 10570-10570/com.jogiprasadpakki.firebaseapp D/FA: Debug-level message logging enabled
02-02 10:01:15.377 10570-10570/com.jogiprasadpakki.firebaseapp V/FA: Registered activity lifecycle callback
02-02 10:01:15.397 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Using measurement service
02-02 10:01:15.397 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Connecting to remote service
02-02 10:01:15.397 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Using measurement service
02-02 10:01:15.397 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Connection attempt already in progress
02-02 10:01:15.477 10570-10570/com.jogiprasadpakki.firebaseapp V/FA: onActivityCreated
02-02 10:01:15.738 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Using measurement service
02-02 10:01:15.738 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Connection attempt already in progress
02-02 10:01:15.738 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Activity resumed, time: 10022170
02-02 10:01:15.738 10570-10589/com.jogiprasadpakki.firebaseapp I/FA: Tag Manager is not found and thus will not be used
02-02 10:01:15.748 10570-10589/com.jogiprasadpakki.firebaseapp D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_screen_class(_sc)=SignUpActivity, firebase_screen_id(_si)=-1409030738035503793}]
02-02 10:01:15.818 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Using measurement service
02-02 10:01:15.818 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Connection attempt already in progress
02-02 10:01:15.878 10570-10589/com.jogiprasadpakki.firebaseapp D/FA: Connected to remote service
02-02 10:01:15.878 10570-10589/com.jogiprasadpakki.firebaseapp V/FA: Processing queued up service tasks: 4
02-02 10:01:15.998 32122-10608/? V/FA-SVC: Logging event: origin=auto,name=screen_view(_vs),params=Bundle[{firebase_event_origin(_o)=auto, firebase_screen_class(_sc)=SignUpActivity, firebase_screen_id(_si)=-1409030738035503793}]
02-02 10:01:16.008 32122-10608/? V/FA-SVC: Saving event, name, data size: screen_view(_vs), 60
02-02 10:01:16.008 32122-10608/? V/FA-SVC: Event recorded: Event{appId='com.jogiprasadpakki.firebaseapp', name='screen_view(_vs)', params=Bundle[{firebase_event_origin(_o)=auto, firebase_screen_class(_sc)=SignUpActivity, firebase_screen_id(_si)=-1409030738035503793}]}
02-02 10:01:16.018 32122-10608/? V/FA-SVC: Upload scheduled in approximately ms: 1942055
02-02 10:01:16.028 32122-10608/? V/FA-SVC: Scheduling upload with GcmTaskService
02-02 10:01:16.028 32122-10608/? V/FA-SVC: Scheduling task with Gcm. Time1942055
02-02 10:01:16.038 32122-10608/? V/FA-SVC: Background event processing time, ms: 47

2 个解决方案

#1


0  

You are setting the value of datareference in onCreate method which will be called after onStart method. Inside onStart method, datareference passed will be null.

您正在onCreate方法中设置datareference的值,该方法将在onStart方法之后调用。在onStart方法中,传递的数据引用将为null。

So initialize the value of datareference in onStart itself.

因此,在onStart本身初始化datareference的值。

#2


0  

Avoid populating the RecyclerView inside onStart() method. Its better to call a custom function and implement the code there. For you I will recommend using the code something like this:

避免在onStart()方法中填充RecyclerView。最好调用自定义函数并在那里实现代码。对于你,我建议使用这样的代码:

 public void populateFeed(){
         FirebaseRecyclerAdapter firebaseRecyclerAdapter = new 
         FirebaseRecyclerAdapter(
                    Userstories.class,
                    R.layout.single_post_row,
                    BlogViewHolder.class,
                    dataReference
         )   {
                @Override
                protected void populateViewHolder(BlogViewHolder viewHolder, Users model, int position) {
                    viewHolder.setNameText(model.getName());
                    viewHolder.setProfession(model.getprofession());
                }
            };
    
            recyclerView.setAdapter(firebaseRecyclerAdapter); 
       }

And at the end of onCreate() dont forget to call the populateFeed() function,

并且在onCreate()的末尾不要忘记调用populateFeed()函数,

@Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        firebase = FirebaseDatabase.getInstance();
        dataReference = firebase.getReference().child("Users");



        recyclerView = (RecyclerView)findViewById(R.id.story_adapter);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

       populateFeed();
    }
This should do the work for you.


推荐阅读
  • oracle恢复失败,RMAN数据库恢复失败解决一例
    问题:这是一个从RAC环境的数据库的RAMN备份恢复到一个单机数据库的操作。当恢复数据文件和恢复正常,但在open数据库时出报下面的错误。--rman备 ... [详细]
  • monkey初接触
    第一次听说monkey,根本不知道是什么东西,脑海里就一个印象,很厉害的自动化测试工具,可是体验了一下,似乎不 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 先看一段错误日志:###Errorqueryingdatabase.Cause:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransie ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 实现一个通讯录系统,可添加、删除、修改、查找、显示、清空、排序通讯录信息
    本文介绍了如何实现一个通讯录系统,该系统可以实现添加、删除、修改、查找、显示、清空、排序通讯录信息的功能。通过定义结构体LINK和PEOPLE来存储通讯录信息,使用相关函数来实现各项功能。详细介绍了每个功能的实现方法。 ... [详细]
  • 本文介绍了使用数据库管理员用户执行onstat -l命令来监控GBase8s数据库的物理日志和逻辑日志的使用情况,并强调了对已使用的逻辑日志是否及时备份的重要性。同时提供了监控方法和注意事项。 ... [详细]
  • 本文介绍了Foundation框架中一些常用的结构体和类,包括表示范围作用的NSRange结构体的创建方式,处理几何图形的数据类型NSPoint和NSSize,以及由点和大小复合而成的矩形数据类型NSRect。同时还介绍了创建这些数据类型的方法,以及字符串类NSString的使用方法。 ... [详细]
  • PreparedStatement防止SQL注入
    添加数据:packagecom.hyc.study03;importcom.hyc.study02.utils.JDBCUtils;importjava.sql ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了Monkey错误分析日志定位相关的知识,希望对你有一定的参考价值。Monkey测试可以发现的问题 ... [详细]
  • 一条数据的漫游 XEngine SIGMOD Paper Introduction
    大多数人追寻永恒的家园(归宿),少数人追寻永恒的航向。----瓦尔特.本雅明背景X-Engine是阿里数据库产品事业部自研的OLTP数据库存储引擎, ... [详细]
author-avatar
lbjf_887
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有