我是Firebase的新手。我有一个方法,该方法返回从firebase数据库检索的驱动程序对象。请帮助我。
我做了研究,发现问题在于onDataChange()是异步的,因此被称为last。因此,我尝试将最终的return语句放入onDataChange()中。这产生了一个错误:“无法从无效结果类型的方法返回值”。一些解决方案建议将返回类型保存在变量中,并在最后将其返回,但是此解决方案是针对原始数据类型的,这不是我的情况。
private Driver getOneAvailableDriver(String driverUid) {
//get the driver's uid code in the available drivers node
final DatabaseReference driverUidRef = FirebaseDatabase.getInstance().getReference(getString(R.string.drivers_available))
.child(driverUid);
final Driver driver = new Driver();
//get the driver's track
driverUidRef.child(getString(R.string.track)).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String track = dataSnapshot.getValue(String.class);
driver.setTrack(track);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
//get the driver's location
DatabaseReference locationRef = driverUidRef.child("l");
locationRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
ArrayList<Double> customLocation = (ArrayList<Double>) dataSnapshot.getValue();
LatLng location = new LatLng(customLocation.get(0), customLocation.get(1));
driver.setLocation(location);
Log.i("getOneAvailableDriver", driver.toString());
return driver; //here where I tried the second time
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Log.i("getOneAvailableDriver", driver.toString());
return driver;
}
答案 0 :(得分:0)
这产生了一个错误:“无法从void方法返回值 结果类型”。
由于类型为空,您不能返回任何值。
修改
您可以在 $job_positions =array('0' => 'Select', '1' => 'IT Staff', '2' => 'Customer Care', '3' => 'Sales', '4' => 'Doctor');
$options_selected =array('1' => 'IT Staff','2' => 'Doctor');
$opt_array=array();
// extract the job position
for ($i=0; $i < count($job_positions); $i++) {
$disabled = '';
// extract the options_selected and compare with the job position and if match overwrite the variable disabled
for ($x=1; $x <= count($options_selected); $x++) {
if ($options_selected[$x]==$job_positions[$i]) {
$disabled = 'disabled';
}
}
$opt_array[]= '<option '.$disabled.' value="'.$job_positions[$i].'">'.$job_positions[$i].'</option>';
}
echo form_dropdown('category', $opt_array);
内创建一个方法,并将驱动程序对象作为参数传递。
onDataChange()
如果您想了解更多信息,可以参考此post