【发布时间】:2020-07-23 12:59:35
【问题描述】:
这是我的代码。在 firebase 中,我保存了我的纬度和经度。现在我想从 firebase 中检索该纬度和经度并显示在 addreestv 文本框中。但我的代码不起作用。应用程序正在崩溃。什么我应该改变吗?
private void loadAddress() {
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("Users").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String name=""+dataSnapshot.child("mylocation").child("name2").getValue();
lattitude= Double.parseDouble(""+dataSnapshot.child("mylocation").child("latitude").getValue());
longitude= Double.parseDouble(""+dataSnapshot.child("mylocation").child("longitude").getValue());
Geocoder geocoder;
List<Address> addresses;
geocoder=new Geocoder(MainUserActivity.this, Locale.getDefault());
try{
addresses=geocoder.getFromLocation(lattitude,longitude,1);
String address=addresses.get(0).getAddressLine(0);
String city=addresses.get(0).getLocality();
String state=addresses.get(0).getAdminArea();
String country=addresses.get(0).getCountryName();
addresstv.setText(address);
} catch (IOException e) {
Toast.makeText(MainUserActivity.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore errors!
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
}
这是我的日志:
2020-07-23 18:38:43.237 25598-25598/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myproject.marutiApp, PID: 25598
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.get(ArrayList.java:437)
at com.myproject.marutiApp.MainUserActivity$1.onDataChange(MainUserActivity.java:83)
at com.google.firebase.database.Query$1.onDataChange(Query.java:179)
at com.google.firebase.database.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:75)
at com.google.firebase.database.core.view.DataEvent.fire(DataEvent.java:63)
at com.google.firebase.database.core.view.EventRaiser$1.run(EventRaiser.java:55)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:201)
at android.app.ActivityThread.main(ActivityThread.java:6810)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873)
2020-07-23 18:38:43.298 25598-25598/? I/Process:发送信号。 PID:25598 SIG:9
【问题讨论】:
-
logcat的错误是什么?
-
IndexOutOfBoundsException: Index: 0, Size: 0你尝试从一个空列表(大小为 0)中获取第一个元素(索引为 0)。 -
它说try and catch部分有错误。如果我评论了整个部分。应用程序没有崩溃。但是完整的地址也没有显示。
-
谁能给我正确的代码?
标签: android firebase firebase-realtime-database