Ich versuche, ein Bild von Firebase abrufen und dann in Markersymbol hochladen. Basierend auf dem Beispiel aus dem Firebase-Tutorial gelang es mir, das Bild uri abrufen und ich kann setzen, wenn ich die URI in eine Bildansicht bekomme funktioniert es gut, dann habe ich versucht, es in das Symbol der Markierung, aber ich bekomme den Fehler:Bild von Firebase-Speicher in Google Map Marker
D/AndroidRuntime: Shutting down VM
E/UncaughtException: java.lang.NullPointerException
at maps.f.g.a(Unknown Source)
at maps.af.g$a.<init>(Unknown Source)
at maps.af.g.a(Unknown Source)
at maps.af.R.<init>(Unknown Source)
at maps.af.t.a(Unknown Source)
at vl.onTransact(:com.google.android.gms.DynamiteModulesB:167)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.IGoogleMapDelegate$zza$zza.addMarker(Unknown Source)
at com.google.android.gms.maps.GoogleMap.addMarker(Unknown Source)
at com.htaka.mywall.MapsActivity$3.onSuccess(MapsActivity.java:142)
at com.htaka.mywall.MapsActivity$3.onSuccess(MapsActivity.java:137)
at com.google.android.gms.tasks.zze$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5421)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)
I/DynamiteModule: Considering local module com.google.android.gms.tagmanager:3 and remote module com.google.android.gms.tagmanager:3
I/DynamiteModule: Selected local version of com.google.android.gms.tagmanager
W/GoogleTagManager: Tag Manager's event handler WILL NOT be installed (no container loaded)
I/GoogleTagManager: Tag Manager initilization took 29ms
D/FirebaseCrashApiImpl: throwable java.lang.NullPointerException
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.htaka.mywall, PID: 1013
java.lang.NullPointerException
at maps.f.g.a(Unknown Source)
at maps.af.g$a.<init>(Unknown Source)
at maps.af.g.a(Unknown Source)
at maps.af.R.<init>(Unknown Source)
at maps.af.t.a(Unknown Source)
at vl.onTransact(:com.google.android.gms.DynamiteModulesB:167)
at android.os.Binder.transact(Binder.java:380)
at com.google.android.gms.maps.internal.IGoogleMapDelegate$zza$zza.addMarker(Unknown Source)
at com.google.android.gms.maps.GoogleMap.addMarker(Unknown Source)
at com.htaka.mywall.MapsActivity$3.onSuccess(MapsActivity.java:142)
at com.htaka.mywall.MapsActivity$3.onSuccess(MapsActivity.java:137)
at com.google.android.gms.tasks.zze$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5421)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)
W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found.
I/Process: Sending signal. PID: 1013 SIG: 9
Application terminated.
ich weiß nicht, was das Problem ist ... das ist der Code mit denen ich arbeite und die Klasse I loadimage verwenden sie es in ein Imageview zu setzen:
public void setMarkers(DataSnapshot dS ,boolean re) {
if(re) {mMap.clear();}
post = dS.getValue(Post.class);
storageRef.child("mountains.jpg").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
ImageView im=new ImageView(MapsActivity.this);
GlideUtil.loadImage(uri.toString(),im);
marker = mMap.addMarker(new MarkerOptions()
.position(new LatLng(post.latitude, post.longitude))
.title(post.title)
.icon(BitmapDescriptorFactory.fromBitmap(im.getDrawingCache()))
);
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception exception) {
System.out.print("image "+exception.getMessage());
marker = mMap.addMarker(new MarkerOptions()
.position(new LatLng(post.latitude, post.longitude))
.title(post.title)
);
}
});
PS: falls ich Entfernen Sie das Symbol (BitmapDescriptorFactry ......) die App läuft wie es sollte.
hier ist das loadImage, ich habe es aus dem Beispiel in der Firebase GitHub Abschnitt, ich habe es getestet und es hat funktioniert, Sie senden grundsätzlich uri mit dem Imageview und es lädt es in die Bildansicht, falls jemand interessiert ist: Gradle: kompilieren 'com.github.bumptech.glide: glide: 3.6.0'
public class GlideUtil {
public static void loadImage(String url, ImageView imageView) {
Context context = imageView.getContext();
ColorDrawable cd = new ColorDrawable(ContextCompat.getColor(context, R.color.wallet_holo_blue_light));
Glide.with(context)
.load(url)
.placeholder(cd)
.crossFade()
.centerCrop()
.into(imageView);
}
Dank einer Tonne! beste Antwort werde ich bekommen, kopiert und funktioniert wie ein Zauber. –