我需要确保用户添加的标记对google maps活动中的所有其他用户也是可见的,因此,例如,如果4个用户在地图的末尾各放置一个标记,则必须显示所有4个。我试着这样做,但一旦我点击Cardview,就可以进入谷歌地图。
我在addrees之前使用了日志,也使用了gender,它们都是“Null”,我如何解决?
出现此错误
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
at com.example.chatapp.Fragments.TrovamicoActivity$1.lambda$onDataChange$1$com-example-chatapp-Fragments-TrovamicoActivity$1(TrovamicoActivity.java:88)
at com.example.chatapp.Fragments.TrovamicoActivity$1$$ExternalSyntheticLambda1.onComplete(Unknown Source:2)
at com.google.android.gms.tasks.zzi.run(com.google.android.gms:play-services-tasks@@18.0.1:1)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7656)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
GoogleMaps活动
public static final String TAG = "addreess";
//private GoogleMap mMap;
private FragmentsTrovamicoBinding binding;
LatLng latLng;
private DatabaseReference reference;
private FirebaseUser firebaseUser;
List<String> addresses, genders;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = FragmentsTrovamicoBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
Log.d(TAG, "String addreess: " + addresses);
addresses = new ArrayList<>();
genders = new ArrayList<>();
firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
reference = FirebaseDatabase.getInstance().getReference("Users").child(firebaseUser.getUid());
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot dataSnapshot: snapshot.getChildren()) {
reference.child("address").get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
String address = task.getResult().getValue().toString();
addresses.add(address);
}
});
Log.d(TAG, "String addreess: " + addresses);
reference.child("gender").get().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
String gender = task.getResult().getValue().toString();
genders.add(gender);
}
});
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
};
reference.addListenerForSingleValueEvent(eventListener);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
for (int i = 0; i < addresses.size(); i++) {
String user_address = addresses.get(i);
if (!user_address.equals("To be added")) {
Log.d(TAG, "String addreess: " + addresses);
String user_gender = genders.get(i);
latLng = getLocationFromAddress(user_address);
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(latLng);
markerOptions.title("You");
Log.d(TAG, "String addreess: " + addresses);
markerOptions.icon(BitmapFromVector(getApplicationContext(), (user_gender.equals("Male")) ? R.drawable.male : R.drawable.female));
googleMap.clear();
googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 5));
googleMap.addMarker(markerOptions);
}
}
}
public LatLng getLocationFromAddress(String strAddress) {
Geocoder coder = new Geocoder(this);
List<Address> address;
LatLng p1;
try {
address = coder.getFromLocationName(strAddress, 5);
if (address == null) {
return null;
}
Address location = address.get(0);
p1 = new LatLng(location.getLatitude(), location.getLongitude());
return p1;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private BitmapDescriptor BitmapFromVector(Context context, int vectorResId) {
// below line is use to generate a drawable.
Drawable vectorDrawable = ContextCompat.getDrawable(context, vectorResId);
// below line is use to set bounds to our vector drawable.
vectorDrawable.setBounds(0, 0, vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight());
// below line is use to create a bitmap for our
// drawable which we have added.
Bitmap bitmap = Bitmap.createBitmap(vectorDrawable.getIntrinsicWidth(), vectorDrawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
// below line is use to add bitmap in our canvas.
Canvas canvas = new Canvas(bitmap);
// below line is use to draw our
// vector drawable in canvas.
vectorDrawable.draw(canvas);
// after generating our bitmap we are returning our bitmap.
return BitmapDescriptorFactory.fromBitmap(bitmap);
}
}
我是编程新手,我开始使用Ionic框架构建应用程序作为体验。我目前正在学习构建一个基本的社交媒体应用程序,匿名用户可以在该平台上发帖。 我现在处于用户可以评论帖子的阶段。但是,我很难在视图上显示每个帖子的实时评论数。 我计算评论的方法是从Firebase获取帖子数据,计算评论数量,然后显示给视图。 我尝试过使用间隔来每隔x秒获取post数据,以刷新post数据。这有点可行,但问题是离子内容(视图)
问题内容: 作为标题,如何从Firebase获取数据并在android studio中显示?当前,由于我不知道如何使用微调器,因此我将id首先放在XML文件中作为EditText。有人知道如何从Firebase获取数据并修改Java文件吗?例如,我想显示微调器中所有(1111,2222,3333 ....)的所有registerEventName(Google)。我在下面添加了附件。感谢您的推进,
我有一个带有此模式的数据库: 我测试了这段代码,但我无法从数据库中获得任何消息。我会感谢你的帮助。
我试图获得保存在firebase实时数据库中的坐标,并使用google maps API在地图上显示它们。这是我目前掌握的代码。现在,它打开并使用html5 geolocation API向用户显示当前位置,并使用Geofire将lat和long坐标同步到firebase实时数据库。 我不知道如何检索这些点,并在谷歌地图上同时显示不同用户的位置。如果有人能在这方面帮助我,我将非常感激。
问题内容: 我必须使用JavaScript创建一个表单,用户将上载JPG文件并与其他信息(例如名称,电子邮件等)一起提交。当用户单击提交时,表单中的所有信息将被加载到值对象中。对于图像文件,我将其设置为。 所以假设: 我还设置了一个servlet来处理提交,但是我不确定如何开始。上传如何进行?用户提交时,如何获取图像信息?这是屏幕截图:http : //imageshack.us/f/32/776
我试过这个: 首先,我获得了数据库中所有数据的引用,我正在尝试获取它,但我不知道如何实现这一点。 此外,当我这样做时,它会抛出以下错误: java.lang.NullPoInterException:尝试在.laramira.atellez.moroninfo.models.newsviewholder$1$1.ondatachange(newsviewholder.java:48)在com.go