我是火力基地的新手。我无法从 firebase 检索数据
Posted
技术标签:
【中文标题】我是火力基地的新手。我无法从 firebase 检索数据【英文标题】:I am new to firebase. I am not able to retrieve data from 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 是的。我有 【参考方案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 来填充您的数据。
【讨论】:
以上是关于我是火力基地的新手。我无法从 firebase 检索数据的主要内容,如果未能解决你的问题,请参考以下文章
为啥从 firebase 控制台发送的通知能够绕过 android 后台任务限制? - 反应原生火力基地 -