【问题标题】:I am new to firebase. I am not able to retrieve data from firebase我是火力基地的新手。我无法从 firebase 检索数据
【发布时间】:2017-09-03 21:13:22
【问题描述】:

   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 初始化失败。 java.lang.reflect.InvocationTargetException 在 java.lang.reflect.Method.invoke(本机方法) 在 com.google.firebase.FirebaseApp.zza(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.provider.FirebaseInitProvider.onCreate(未知来源) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1748) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1723) 在 com.google.firebase.provider.FirebaseInitProvider.attachInfo(未知来源) 在 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) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:java.lang.NoSuchMethodError: No static method zzy(Ljava/lang/Object;)Ljava/lang/Object;在 Lcom/google/android/gms/common/internal/zzaa 类中;或其超类(“com.google.android.gms.common.internal.zzaa”的声明出现在 /data/app/com.example.android.supermarket-1/split_lib_dependencies_apk.apk:classes15.dex 中) 在 com.google.android.gms.measurement.internal.zzx.zzdq(未知来源) 在 com.google.android.gms.measurement.AppMeasurement.getInstance(未知来源) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.google.firebase.FirebaseApp.zza(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.FirebaseApp.initializeApp(未知来源) 在 com.google.firebase.provider.FirebaseInitProvider.onCreate(未知来源) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1748) 在 android.content.ContentProvider.attachInfo(ContentProvider.java:1723) 在 com.google.firebase.provider.FirebaseInitProvider.attachInfo(未知来源) 在 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) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.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'

【问题讨论】:

  • 分享您的产品类别。另外,如果您遇到异常,请分享 logcat 输出
  • 发布您的错误/异常,更详细地说明问题,制作更具描述性的标题。
  • 异常提示“初始化失败”,您在使用之前是否初始化了 Firebase?
  • @MerveSahin 是的。我有

标签: java android firebase firebase-realtime-database


【解决方案1】:
 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) {

            }
        });

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
【解决方案2】:
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 来填充您的数据。

【讨论】:

    猜你喜欢
    • 2021-02-03
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多