gpt4 book ai didi

Android Place.getLocale() 返回 null

转载 作者:搜寻专家 更新时间:2023-11-01 08:21:02 24 4
gpt4 key购买 nike

我正在使用 Android google places SDK 中的地点选择器来获取地址。地点选择器返回地址很好,我能够获取地址、LatLng,但是当我尝试通过区域设置获取国家/地区名称时,它返回 null!

这是我的代码 fragment :

SupportPlaceAutocompleteFragment mAddressEditText = (SupportPlaceAutocompleteFragment) getSupportFragmentManager().findFragmentById(R.id.address);
mAddressEditText.setHint("Address");
mAddressEditText.setOnPlaceSelectedListener(new PlaceSelectionListener()
{
@Override
public void onPlaceSelected(Place place)
{
// TODO: Get info about the selected place.
Log.d(TAG, "Place selected");
mAddressOK = true;
mAddress = place.getAddress().toString();
mLocation = place.getLatLng();
mCountry = place.getLocale().getDisplayCountry();
}

@Override
public void onError(Status status)
{
// TODO: Handle the error.
Log.d(TAG, "Invalid Place Selected.");
mAddressOK = false;
invalidAddressDialog.show();
}
});

但是我得到以下错误:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.util.Locale.getDisplayCountry()' on a null object reference

我已经通过 Log.d 检查验证了 place.getLocale() 返回 null。 documentation没有指定函数调用可以返回 null,我不确定为什么会这样。

编辑1:

根据documentation Place 类在内部使用语言环境来格式化地址。那么 getLocale 怎么会返回 null?!

最佳答案

我会建议使用 GeoCoder 获取国家名称或有关该地点的类似信息。由于您拥有 LatLng,现在您可以创建一个 GeoCoder 对象。

LatLng coordinates = place.getLatLng(); // Get the coordinates from your place
Geocoder geocoder = new Geocoder(this, Locale.getDefault());

List<Address> addresses = geocoder.getFromLocation(
coordinates.latitude,
coordinates.longitude,
1); // Only retrieve 1 address
Address address = addresses.get(0);

然后你可以调用这些方法来获取你想要的信息

address.getCountryCode();
address.getCountryName();

地址对象的更多方法:http://developer.android.com/reference/android/location/Address.html

关于Android Place.getLocale() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51093791/

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