Attempt to invoke virtual method 'double android.location.Location.getLatitude()'

问题描述 投票:0回答:1

我在获取我的位置时遇到了这个问题这是错误片段

private void updateUIValues( Location location) {
     {

        // update all of the text view objects with a new location.
        tv_lat.setText(String.valueOf(location.getLatitude()));
        tv_lon.setText(String.valueOf(location.getLongitude()));
        tv_accuracy.setText(String.valueOf(location.getAccuracy()));

        if (location.hasAltitude()) {
            tv_altitude.setText(String.valueOf(location.getAltitude()));
java android kotlin nullpointerexception
1个回答
0
投票

错误信息“Attempt to invoke virtual method 'double android.location.Location.getLatitude()'”意味着你正试图在一个空的 Location 对象上调用 getLatitude() 方法。

为避免此错误,您应该在调用其方法之前检查 Location 对象是否为 null。下面是一个示例,说明如何修改 updateUIValues 方法来处理这种情况:

private void updateUIValues(Location location) {
    if (location != null) {
        // update all of the text view objects with a new location.
        tv_lat.setText(String.valueOf(location.getLatitude()));
        tv_lon.setText(String.valueOf(location.getLongitude()));
        tv_accuracy.setText(String.valueOf(location.getAccuracy()));

        if (location.hasAltitude()) {
            tv_altitude.setText(String.valueOf(location.getAltitude()));
        } else {
            tv_altitude.setText("N/A");
        }
    } else {
        // handle the case where location is null
        tv_lat.setText("N/A");
        tv_lon.setText("N/A");
        tv_accuracy.setText("N/A");
        tv_altitude.setText("N/A");
    }
}

在这个例子中,我们首先检查位置参数是否不为空。如果它不为空,我们可以安全地调用它的方法,包括getLatitude()getLongitude()getAccuracy()hasAltitude()。如果hasAltitude()返回true,我们也可以调用getAltitude()。如果位置为空,我们将所有文本视图设置为“N/A”以指示位置数据不可用。

© www.soinside.com 2019 - 2024. All rights reserved.