gpt4 book ai didi

android - 如何在同一 Activity android中将变量从一种方法传递给另一种方法

转载 作者:行者123 更新时间:2023-11-29 23:15:52 25 4
gpt4 key购买 nike

我是 android 的新手,我试图将 2 个 double 变量从一种方法传递到另一种方法以将其上传到 firebase 数据库,但我没有成功,变量来自 map 上的某个位置。如何将数据从 searchLocation 传递到 SaveDatasMap 并将其上传到数据库?

我试图将它们静态地放在方法中,但它不允许我放置它。我试图将 double 变量放在开头,但我无法让它们具有要求的值:在所选变量中包含经度和纬度

public  void searchLocation(View view) {


EditText locationSearch = (EditText) findViewById(R.id.editText);
final String location = locationSearch.getText().toString();
List<Address> addressList = null;

if (location != null || !location.equals("")) {
Geocoder geocoder = new Geocoder(this);
try {
addressList = geocoder.getFromLocationName(location, 1);

} catch (IOException e) {
e.printStackTrace();
}
final Address address = addressList.get(0);
final LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude());
mMap.clear();
mMap.addMarker(new MarkerOptions().position(latLng).title(location));
mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
Toast.makeText(getApplicationContext(),address.getLatitude()+" "+address.getLongitude(),Toast.LENGTH_LONG).show();
double longitud = address.getLatitude();
double latitud = address.getLatitude();










}


}

public void SaveDatasMap (View view)
{
GuardarUbicacion = (Button) findViewById(R.id.guardarubicacion);
final DatabaseReference RootRef;
RootRef = FirebaseDatabase.getInstance().getReference();
RootRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

if (!(dataSnapshot.child("Empresa").child(currentUserID).exists()))
{
HashMap<String, Object> userdataMap = new HashMap<>();
userdataMap.put("Longitud", longitud);
userdataMap.put("Longitud", latitud);

RootRef.child("Empresa").child(currentUserID).updateChildren(userdataMap)
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {

if(task.isSuccessful())
{
Toast.makeText(MapTemporalActivity.this, "Se ha guardado la posicion exitosamente", Toast.LENGTH_SHORT).show();

Intent intent = new Intent(MapTemporalActivity.this, LoginActivity.class);
startActivity(intent);


}
else
{

Toast.makeText(MapTemporalActivity.this, "Hubo un error", Toast.LENGTH_SHORT).show();
}
}
});

}
}

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

}
});
}

我需要传递变量经度和纬度。我做了数据上传到数据库,但我不知道如何传递 searchLocation 的双变量或直接将 address.getLatitude() 和 address.getLongitude() 传递给方法 SavesDataMap

我知道我必须在静态中执行该方法,但它不允许我使用 android studio

最佳答案

您可以将这两个变量设为全局变量。像这样实例化它们。
双经度;
双纬;

在您的 searchLocation 方法中执行以下操作:
longitud = address.getLatitude();
latitud = address.getLatitude();

然后在 SaveDatasMap 方法中,您应该能够获取数据。

关于android - 如何在同一 Activity android中将变量从一种方法传递给另一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55388273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com