Android自定义标记加载问题,带有毕加索

问题描述

我想从firebase拍摄照片,并在毕加索的帮助下将它们添加自定义地图标记中。我能够做到这一点,但是当片段第一次打开时却没有显示照片。在片段之间切换时会出现照片。我该如何解决这个问题。

   public class SecondFragment extends Fragment {
static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 23;
boolean konum=false;
konumModel konumModel;
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference reference = database.getReference("konumlar");
int count=0;
List<String> k1,k2,baslık,key,resim;
List<Double> loc1,loc2;
SharedPreferences sharedPreferences;

@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_second,container,false);
            SupportMapFragment supportMapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
    k1=new ArrayList<>();
    k2=new ArrayList<>();
    baslık=new ArrayList<>();
    key=new ArrayList<>();
    resim=new ArrayList<>();
    loc1=new ArrayList<>();
    loc2=new ArrayList<>();
            supportMapFragment.getMapAsync(new OnMapReadyCallback() {
                @Override
                public void onMapReady(GoogleMap googleMap) {

                    reference.addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
                            k1.clear();
                            k2.clear();
                            for(DataSnapshot d:snapshot.getChildren()){
                                konumModel=d.getValue(konumModel.class);
                                k1.add(konumModel.getKonum1());
                                k2.add(konumModel.getKonum2());
                                key.add(konumModel.getKey());
                                baslık.add(konumModel.getText());
                                resim.add(konumModel.getResim());
                                double latitude = Double.parseDouble(k1.get(count));
                                double longitude = Double.parseDouble(k2.get(count));
                                String keya=key.get(count);
                                String bas=baslık.get(count);
                                String res=resim.get(count);

                                LatLng location = new LatLng(latitude,longitude);
                                    Picasso.get()
                                            .load(res)
                                            .resize(200,200)
                                            .centerCrop()
                                            .transform(new CircleBubbleTransformation())
                                            .into(new com.squareup.picasso.Target(){
                                                @Override
                                                public void onBitmapLoaded(Bitmap bitmap,Picasso.LoadedFrom from) {
                                                    System.out.println(count);
                                                    Marker driver_marker = googleMap.addMarker(new MarkerOptions()
                                                            .position(location)
                                                            .icon(BitmapDescriptorFactory.fromBitmap(bitmap))
                                                            .title(bas)
                                                            .snippet(keya));
                                                }

                                                @Override
                                                public void onBitmapFailed(Exception e,Drawable errorDrawable) {

                                                }

                                                @Override
                                                public void onPrepareLoad(Drawable placeHolderDrawable) {

                                                }
                                            });
                                count++;

                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError error) {

                        }

                    });




                    if (ActivityCompat.checkSelfPermission(getActivity(),Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(),Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                        // Todo: Consider calling
                        //    ActivityCompat#requestPermissions
                        // here to request the missing permissions,and then overriding
                        //   public void onRequestPermissionsResult(int requestCode,String[] permissions,//                                          int[] grantResults)
                        // to handle the case where the user grants the permission. See the documentation
                        // for ActivityCompat#requestPermissions for more details.
                        return;
                    }
                    googleMap.setMyLocationEnabled(true);
                    googleMap.setonMyLocationchangelistener(new GoogleMap.OnMyLocationchangelistener() {
                        @Override
                        public void onMyLocationChange(Location location) {
                            LatLng latlng=new LatLng(location.getLatitude(),location.getLongitude());
                            CameraUpdate cameraUpdate= CameraUpdateFactory.newLatLngZoom(
                                    latlng,15);
                            if(konum==false){
                                googleMap.animateCamera(cameraUpdate);
                                konum=true;
                            }
                        }
                    });
                    googleMap.setonMapClickListener(new GoogleMap.OnMapClickListener() {
                        @Override
                        public void onMapClick(LatLng latLng) {

                            MarkerOptions markerOptions = new MarkerOptions();
                            markerOptions.position(latLng);

                            markerOptions.title(latLng.latitude+" : "+latLng.longitude);
                            ArrayList<String> a = new ArrayList<String>();
                            googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,15));

                            Intent i = new Intent(getActivity(),mapFromActivity.class);
                            a.add(String.valueOf(latLng.latitude));
                            a.add(String.valueOf(latLng.longitude));
                            i.putExtra("title",a);
                            startActivity(i);
                        }

                    });
                    googleMap.setonMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
                        @Override
                        public boolean onMarkerClick(Marker marker) {

                            Intent i = new Intent(getActivity(),MapTempActivity.class);
                            String b= marker.getSnippet();
                            i.putExtra("item",b);
                            startActivity(i);

                            return false;
                        }
                    });




                }

            });


    return view;

}

}

When first opened

When I change the fragment and open it again.

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)