未触发 SupportPlaceAutocompleteFragment 的 OnPlaceSelectedListener
OnPlaceSelectedListener of SupportPlaceAutocompleteFragment not fired
我在使用 SupportPlaceAutocompleteFragment 的 OnPlaceSelectedListener 方法时遇到问题。
我的 onViewCreated() 方法:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Initialise a new fragment inside of this one.
mFragmentManager = getChildFragmentManager();
mSupportMapFragment = (SupportMapFragment) mFragmentManager.findFragmentByTag("mapFragment");
mSupportPlaceAutocompleteFragment = (SupportPlaceAutocompleteFragment) mFragmentManager.findFragmentByTag("autocompleteFragment");
// Never inflate fragments inside other fragments in a layout.xml!
// Do it programmatically.
// See here for reference:
if (mSupportMapFragment == null) {
mSupportMapFragment = new SupportMapFragment();
fragmentTransaction(mFragmentManager, mSupportMapFragment, R.id.map_fragment_container, "mapFragment");
}
// Asynchronous thread to load map.
mSupportMapFragment.getMapAsync(this);
if (mSupportPlaceAutocompleteFragment == null) {
mSupportPlaceAutocompleteFragment = new SupportPlaceAutocompleteFragment();
fragmentTransaction(mFragmentManager, mSupportPlaceAutocompleteFragment, R.id.card_view, "autocompleteFragment");
}
// Filter for a specific place type.
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
.setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES)
.build();
mSupportPlaceAutocompleteFragment.setFilter(typeFilter);
Log.d("I'M HERE", "Hello.");
mSupportPlaceAutocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
// TODO: Get info about the selected place.
Log.i("PLACE", "Place: " + place.getName());
int flag = 1;
Log.d("FLAG", "flag: " + flag);
}
@Override
public void onError(Status status) {
// TODO: Handle the error.
Log.i("PLACE_ERROR", "An error occurred: " + status);
int flag = 0;
Log.d("FLAG", "flag: " + flag);
}
});
Log.d("I'M HERE, TOO", "Hello.");
}
当我 select 一个地方(所有 API 都已启用并且我有一个 Google 键)时,AutoCompleteFragment 刚刚关闭,地图上没有任何反应。
mSupportPlaceAutocompleteFragment.setOnPlaceSelectedListener(...) 方法未被触发。
有什么提示吗?
我的问题与this question中的问题类似。
我也在使用嵌套片段,我不明白在这种情况下如何查看 onActivityResult() 方法。
终于解决了这个问题,希望对大家有所帮助。
我在 MainActivity
的 onActivityResult() 方法中添加了这条臭名昭著的行
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
...
}
然后将相同的方法放入我的 MapFragment
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
现在嵌套片段正在发回其数据。
我在使用 SupportPlaceAutocompleteFragment 的 OnPlaceSelectedListener 方法时遇到问题。
我的 onViewCreated() 方法:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Initialise a new fragment inside of this one.
mFragmentManager = getChildFragmentManager();
mSupportMapFragment = (SupportMapFragment) mFragmentManager.findFragmentByTag("mapFragment");
mSupportPlaceAutocompleteFragment = (SupportPlaceAutocompleteFragment) mFragmentManager.findFragmentByTag("autocompleteFragment");
// Never inflate fragments inside other fragments in a layout.xml!
// Do it programmatically.
// See here for reference:
if (mSupportMapFragment == null) {
mSupportMapFragment = new SupportMapFragment();
fragmentTransaction(mFragmentManager, mSupportMapFragment, R.id.map_fragment_container, "mapFragment");
}
// Asynchronous thread to load map.
mSupportMapFragment.getMapAsync(this);
if (mSupportPlaceAutocompleteFragment == null) {
mSupportPlaceAutocompleteFragment = new SupportPlaceAutocompleteFragment();
fragmentTransaction(mFragmentManager, mSupportPlaceAutocompleteFragment, R.id.card_view, "autocompleteFragment");
}
// Filter for a specific place type.
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
.setTypeFilter(AutocompleteFilter.TYPE_FILTER_CITIES)
.build();
mSupportPlaceAutocompleteFragment.setFilter(typeFilter);
Log.d("I'M HERE", "Hello.");
mSupportPlaceAutocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
// TODO: Get info about the selected place.
Log.i("PLACE", "Place: " + place.getName());
int flag = 1;
Log.d("FLAG", "flag: " + flag);
}
@Override
public void onError(Status status) {
// TODO: Handle the error.
Log.i("PLACE_ERROR", "An error occurred: " + status);
int flag = 0;
Log.d("FLAG", "flag: " + flag);
}
});
Log.d("I'M HERE, TOO", "Hello.");
}
当我 select 一个地方(所有 API 都已启用并且我有一个 Google 键)时,AutoCompleteFragment 刚刚关闭,地图上没有任何反应。 mSupportPlaceAutocompleteFragment.setOnPlaceSelectedListener(...) 方法未被触发。
有什么提示吗?
我的问题与this question中的问题类似。
我也在使用嵌套片段,我不明白在这种情况下如何查看 onActivityResult() 方法。
终于解决了这个问题,希望对大家有所帮助。
我在 MainActivity
的 onActivityResult() 方法中添加了这条臭名昭著的行@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
...
}
然后将相同的方法放入我的 MapFragment
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
现在嵌套片段正在发回其数据。