Android – Java,将类的位置数据发送到活动视图

问题描述

请帮助我,我正在使用android studio – Java。我有一个Activity(MainActivity),要在其中显示有关位置的信息;但是我希望此信息来自其他类(位置),朝向此MainActivity,如何使该位置类自动发送位置数据。 好吧,我曾尝试在MainActivity中调用方法,该方法是从class-location获取位置数据的,但是此方法的参数为“ Location location”,因此无法直接调用它。 我曾尝试在“定位方法”中放置一个方法来发送信息,但这是行不通的 我将位置变量声明为全局变量,然后将其放在其他方法中发送给他们,但不起作用 我正在尝试使用额外的类来使用位置信息(纬度和经度),但是如何获取数据。 无论如何……请帮助我,这个主意是将一个类的位置信息:“ getLatitude()”和“ getLongitude()”自动传递给我的MainActivity,然后再传递给DDBB。 非常感谢您的帮助 这是“ MainActivity”类

public class MainActivity extends AppCompatActivity {

TextView tvlatitud,tvlongitud;
Location location;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvlongitud = findViewById(R.id.tv_longitud);
    tvlatitud = findViewById(R.id.tv_latitud);
    location = new Location(this);
    askLocation();
}
public void askLocation(){
    location.updateGPS();
}

public void showData(String lat,String lon ){
    tvlatitud.setText(lat);
    tvlongitud.setText(lon);
}

这是Location类

public class Location extends AppCompatActivity {

private static final int PERMISSIONS_FINE_LOCATION = 99;
FusedLocationProviderClient fusedLocationProviderClient;
LocationRequest locationRequest;
String latitude1,longitude1;
private MainActivity mainActivity;

public Location(MainActivity mainActivity){

    this.mainActivity = mainActivity;
}

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    locationRequest = new LocationRequest();
    locationRequest.setInterval(1000 * 30);
    locationRequest.setFastestInterval(1000 * 50);
    locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    updateGPS();
}
public void updateGPS() {
    fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(Location.this);
    if (ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
        fusedLocationProviderClient.getLastLocation().addOnSuccessListener(this,new OnSuccessListener<android.location.Location>() {
            @Override
            public void onSuccess(android.location.Location location) {
                updateUIValues(location);
                mainActivity.showData(latitude1,longitude1);
            }
        });
    } else {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION,},PERMISSIONS_FINE_LOCATION);
        }
    }
}
private void updateUIValues(android.location.Location location) {
    latitude1 = String.valueOf(location.getLatitude());
    longitude1 = String.valueOf(location.getLongitude());

}
}

解决方法

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

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

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