- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 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,我不确定为什么会这样。
根据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/
我正在使用 vaadin 框架,在我的应用程序中我有: @Override public void onRequestStart(HttpServletRequest request,
GetLocale 函数 返回当前区域设置 ID 值。 GetLocale() 说明 locale 是用户参考信息集合,与用户的语言、国家和文化传统有关。locale 决定键盘布局、字母排序
我可以使用 setlocale() 设置语言环境功能。但是有什么方法可以获取语言环境并将其保存在变量中,以便以后可以重置它。 这就是我想要做的: str=getlocale(LC_CTYPE); se
我正在尝试国际化我的应用程序,我开始使用 ResourceBundle 和 Locale 进行练习,使用一个创建 ResourceBundle rb 的简单函数> 使用机器的默认 Locale 并在打
我正在使用 Android google places SDK 中的地点选择器来获取地址。地点选择器返回地址很好,我能够获取地址、LatLng,但是当我尝试通过区域设置获取国家/地区名称时,它返回 n
我需要在没有安装任何 rubygems 的情况下检测 Ruby 中的语言。 Python 和 Perl 都将语言环境实用程序作为核心 API 的一部分。我想要类似的东西 # LC_ALL=cs_C
文档对此不是很明确: ServletRequest#getLocale 能否返回 null?有没有可能是服务器没有指定语言环境? 最佳答案 此方法不可能返回空值。来自documentation : R
我需要获取系统语言环境来做很多事情,最终我想使用 gettext 翻译我的应用程序。我打算在 Linux 和 OSX 上分发它,但我在 OSX Snow Leopard 上遇到了问题: $ pytho
我在我的 Laravel 5.2 应用程序中使用了 2 种语言。我目前正在实现一个简单的密码提醒页面,由于我不知道的原因,我在以正确的语言发送新密码电子邮件时遇到了问题。 假设我看到的是德语页面。在页
我不知道我是否使用了 i18n 库错误,但我很确定我做对了。 我一直在尝试更改语言环境。这是我当前的代码。如您所见,我在 glocal i81n 变量上调用了 setLocale,但它仍然打印出 en
有什么区别或者它们相同(除了它们返回的格式)? 最佳答案 经过快速谷歌,我发现了这个: http://androiddevevelopmentnotes.blogspot.com/2011/08/ho
我是一名优秀的程序员,十分优秀!