我使用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");
}
答案 0 :(得分:0)
所以在我检查了一段时间后如何使用字符串获取Place
之后
答案是,现在你不能。
Place是GooglePlaces为我们提供的界面。
它有一些方法,如getId()
,getName()
等。
当我有一个包含地址的字符串时,我试图做什么,例如“华盛顿”是触发onPlaceSelected
方法然后采取
<{1}}提供latitude
和longitude
。
您可以通过创建PlaceSelectionListener来触发onPlaceSelected方法 作为你的班级成员。
例如:
Place
拥有此监听器后,您可以使用它:
PlaceSelectionListener listener = new PlaceSelectionListener()
{
@Override
public void onPlaceSelected(Place place)
{
Log.d("TAG","onPlaceSelected");
}
@Override
public void onError(Status status)
{
Log.d("TAG","onError");
}
};
请注意,该方法需要Place变量作为参数。 它不能接受String,正如我之前所说,现在...... PlacesApi没有 给出任何从字符串中获取Place的方法..所以你必须有一个有效的 将对象放在这个方法中。
至于我的应用程序,我找到了另一个解决方案,我使用了Android Geocoder 相反,它为我提供了一个正确的纬度和经度。