首页 文章

我是firebase的新手 . 我无法从firebase检索数据

提问于
浏览
0

This is how my firebase database looks like.

mDatabase.child("KhCm8DZpg72BBXCISCC").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                Product product = dataSnapshot.getValue(Product.class);
                     s="Product Name: "+product.getName();
                          textView.setText(s);    
    }

            @Override
            public void onCancelled(DatabaseError error) {

            }
        });

这是我用来检索的代码

04-09 09:57:42.501 9450-9450 /? E / FirebaseApp:Firebase API初始化失败 . 来自com.google.firebase.FirebaseApp.initializeApp(未知来源)的com.google.firebase.FirebaseApp.zza(未知来源)的java.lang.reflect.Method.invoke(本地方法)中的java.lang.reflect.InvocationTargetException com.google.firebase.FirebaseApp.initializeApp(未知来源)位于com.google.firebase.FirebaseApp.initializeApp(未知来源)com.google.firebase.provider.FirebaseInitProvider.onCreate(未知来源)位于android.content.ContentProvider . attachInfo(ContentProvider.java:1748)位于android.app.A活动时,com.google.firest.provider.FirebaseInitProvider.attachInfo(未知来源)的android.content.ContentProvider.attachInfo(ContentProvider.java:1723)处于android.app.ActivityThread.installProvider(ActivityThread . java:5153)在android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)android.app.ActivityThread.-wrap1(ActivityThread.java)at android .app.ActivityThread $ H.handleMessage(ActivityThread.jav a:1405)在Android.os.Handler.dispatchMessage(Handler.java:102)的android.app.Looper.loop(Looper.java:148)android.app.ActivityThread.main(ActivityThread.java:5417)at at java.lang.reflect.Method.invoke(Native Method)在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)com.android.internal.os.ZygoteInit.main(ZygoteInit.java) :616)引起:java.lang.NoSuchMethodError:没有静态方法zzy(Ljava / lang / Object;)Ljava / lang / Object;在课堂Lcom / google / android / gms / common / internal / zzaa;或其超级类('com.google.android.gms.common.internal.zzaa'的声明出现在com中的/data/app/com.example.android.supermarket-1/split_lib_dependencies_apk.apk:classes15.dex) . 来自java.lang.reflect.Method.invoke(Native Method)的com.google.android.gms.measurement.AppMeasurement.getInstance(未知来源)的google.android.gms.measurement.internal.zzx.zzdq(未知来源)at com.google.firebase.FirebaseApp上的com.google.firebase.FirebaseApp.initializeApp(未知来源)中的com.google.firebase.FirebaseApp.zza(未知来源),位于com.google.fire.FirebaseApp上的com.google.firebase.FirebaseApp.initializeApp(未知来源) . 在android.content.ContentProvider.attachInfo(ContentProvider.java:1723)的android.content.ContentProvider.attachInfo(ContentProvider.java:1748)的com.google.firebase.provider.FirebaseInitProvider.onCreate(未知来源)初始化App(未知来源) )在android.app.ActivityThread.installProvider(ActivityThrea)的com.google.firebase.provider.FirebaseInitProvider.attachInfo(未知来源) d.java:5153)在Android.app.ActivityThread.handle上的android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)android.app.ActivityThread.-wrap1(ActivityThread.java)的android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)在android.app.A.运行时android.O.Roper.loop(Looper.java:148)上的android.app.A活动线程中的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1405)处于Android.os.Handler.dispatchMessage(Handler.java:102) . app.ActivityThread.main(ActivityThread.java:5417)位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726)的java.lang.reflect.Method.invoke(Native Method)中 . android.internal.os.ZygoteInit.main(ZygoteInit.java:616)这个错误即将获得`apply plugin:'com.android.application'

android {
                 compileSdkVersion 23
                 buildToolsVersion "25.0.2"
                defaultConfig {
               applicationId "com.example.android.supermarket"
                minSdkVersion 19
                targetSdkVersion 23
            versionCode 1
                versionName "1.0"
                 testInstrumentationRunner                                             "android.support.test.runner.AndroidJUnitRunner"
              }
            buildTypes {
             release {
                     minifyEnabled false
           proguardFiles getDefaultProguardFile('proguard-android.txt'),        'proguard-rules.pro'
    }
}
           }

                 dependencies {
         compile fileTree(dir: 'libs', include: ['*.jar'])
             androidTestCompile('com.android.support.test.espresso:espresso- core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})

compile 'com.android.support:design:23.4.0'
compile 'com.android.support:design:23.4.0'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.android.support:support-v4:23.4.0'
compile 'com.google.android.gms:play-services-appindexing:9.8.0'
compile 'com.google.firebase:firebase-auth:10.0.1'
compile 'com.google.firebase:firebase-database:10.0.1'
testCompile 'junit:junit:4.12'
        }

申请插件:'com.google.gms.google-services'

2 回答

  • 0
    mDatabase.child("products").child("KhCm8DZpg72BBXCISCC").addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
    
                    Product product = dataSnapshot.getValue(Product.class);
                         s="Product Name: "+product.getName();
                              textView.setText(s);    
        }
    
                @Override
                public void onCancelled(DatabaseError error) {
    
                }
            });
    
  • 0
    mDatabase.child("products").addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
    
                        //this loop will iterate through all the available children
                        for(DataSnapshot ds:dataSnpshot.getChildren())
                        {
                             Product product = ds.getValue(Product.class);
                             s="Product Name: "+product.getName();
                             textView.setText(s); //this would be overwritten
                        }    
            }
    
                    @Override
                    public void onCancelled(DatabaseError error) {
    
                    }
                });
    

    现在这将覆盖TextView中的文本 . 您可以将所有产品名称存储在一个数组中,然后稍后使用它,或者您可以以编程方式创建文本视图,也可以使用RecyclerView来填充数据 .

相关问题