Android PlacesAutoCompleteFragment 触发器 onPlaceSelected
Android PlacesAutoCompleteFragment trigger onPlaceSelected
我正在使用 PlacesAutoCompleteFragment 并向其添加了 PlaceSelectionListener。
当用户实际点击某个地方并且
onPlaceSelected 方法被触发。
但在某些情况下,我需要以编程方式在地点搜索栏中设置文本,然后触发 onPlaceSelected 方法。
我使用方法 setText 以编程方式输入文本,但未触发 onPlaceSelected。有没有办法以编程方式触发它?
PlacesAutocompleteFragment autocompletePlacesFragment;
@Override
protected void onCreate(Bundle saveInstanceState)
{
....
autocompletePlaceFragment = (PlaceAutocompleteFragment)getFragmentManager().findFragmentById(R.id.places_frament);
placesFragment.setOnPlaceSelectedListener(new PlaceSelectionListener()
{
@Override
public void onPlaceSelected(Place place)
{
Log.d("TAG","onPlaceSelected");
}
@Override
public void onError(Status status)
{
Log.d("TAG", "onError");
}
});
//Now when I use this method, I want to trigger onPlaceSelected..
autocompletePlaceFragment.setText("Washington");
}
所以在我检查了一段时间如何使用字符串获得 Place
之后,
答案是目前还不能。
Place 是 GooglePlaces 给我们的一个界面。
它有一些方法,如 getId()
、getName()
等。
当我有一个包含地址的字符串时,例如 "Washington",我试图做的是触发 onPlaceSelected
方法,然后获取
latitude
和 longitude
Place
给了我们。
您可以通过创建一个PlaceSelectionListener来触发onPlaceSelected方法
作为您的 class 会员。
例如:
PlaceSelectionListener listener = new PlaceSelectionListener()
{
@Override
public void onPlaceSelected(Place place)
{
Log.d("TAG","onPlaceSelected");
}
@Override
public void onError(Status status)
{
Log.d("TAG","onError");
}
};
拥有此侦听器后,您可以使用它:
listener.onPlaceSelected(yourPlace);
请注意,该方法需要一个 Place 变量作为参数。
正如我之前所说,它暂时不能接受 String。PlacesApi 不接受
给出从字符串中获取位置的任何方法..所以你必须有一个有效的
为您使用此方法放置对象。
至于我的应用程序,我找到了另一个解决方案,我使用了 Android Geocoder
相反,它为我提供了地址的正确纬度和经度。
我正在使用 PlacesAutoCompleteFragment 并向其添加了 PlaceSelectionListener。 当用户实际点击某个地方并且 onPlaceSelected 方法被触发。
但在某些情况下,我需要以编程方式在地点搜索栏中设置文本,然后触发 onPlaceSelected 方法。
我使用方法 setText 以编程方式输入文本,但未触发 onPlaceSelected。有没有办法以编程方式触发它?
PlacesAutocompleteFragment autocompletePlacesFragment;
@Override
protected void onCreate(Bundle saveInstanceState)
{
....
autocompletePlaceFragment = (PlaceAutocompleteFragment)getFragmentManager().findFragmentById(R.id.places_frament);
placesFragment.setOnPlaceSelectedListener(new PlaceSelectionListener()
{
@Override
public void onPlaceSelected(Place place)
{
Log.d("TAG","onPlaceSelected");
}
@Override
public void onError(Status status)
{
Log.d("TAG", "onError");
}
});
//Now when I use this method, I want to trigger onPlaceSelected..
autocompletePlaceFragment.setText("Washington");
}
所以在我检查了一段时间如何使用字符串获得 Place
之后,
答案是目前还不能。
Place 是 GooglePlaces 给我们的一个界面。
它有一些方法,如 getId()
、getName()
等。
当我有一个包含地址的字符串时,例如 "Washington",我试图做的是触发 onPlaceSelected
方法,然后获取
latitude
和 longitude
Place
给了我们。
您可以通过创建一个PlaceSelectionListener来触发onPlaceSelected方法 作为您的 class 会员。
例如:
PlaceSelectionListener listener = new PlaceSelectionListener()
{
@Override
public void onPlaceSelected(Place place)
{
Log.d("TAG","onPlaceSelected");
}
@Override
public void onError(Status status)
{
Log.d("TAG","onError");
}
};
拥有此侦听器后,您可以使用它:
listener.onPlaceSelected(yourPlace);
请注意,该方法需要一个 Place 变量作为参数。 正如我之前所说,它暂时不能接受 String。PlacesApi 不接受 给出从字符串中获取位置的任何方法..所以你必须有一个有效的 为您使用此方法放置对象。
至于我的应用程序,我找到了另一个解决方案,我使用了 Android Geocoder 相反,它为我提供了地址的正确纬度和经度。