我尝试使用Google的地方自动填充功能(https://developers.google.com/places/android-api/autocomplete)来实现我应用中的片段。但是当我从这个片段导航到其他片段然后回到这个片段时,我遇到了这个错误
Caused by: java.lang.IllegalArgumentException: Binary XML file line #30: Duplicate id 0x7f0f010f, tag null, or parent id 0x7f0f00c0 with another fragment for com.google.android.gms.location.places.ui.PlaceAutocompleteFragment
at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2148)
这是java代码
private PlaceAutocompleteFragment mSearchPAF;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.some_layout, container, false);
mSearchLocationPAF = (PlaceAutocompleteFragment) parentActivity.getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
}
这是XML文件
<RelativeLayout
android:id="@+id/someRelativeLayout"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="30dp"
android:background="@drawable/some_drawable">
<fragment
android:id="@+id/place_autocomplete_fragment"
android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
我在同一个java和xml文件中也有另一个地图片段,但我设法通过按照这篇文章(Duplicate ID, tag null, or parent id with another fragment for com.google.android.gms.maps.MapFragment)中的答案来解决它,但我无法找到此地方自动填充的任何解决方案片段
答案 0 :(得分:2)
我已经通过这里的一个答案自己解决了这个问题 Duplicate ID, tag null, or parent id with another fragment for com.google.android.gms.maps.MapFragment
{{1}}
答案 1 :(得分:1)
我目前正在开发我的项目,并使用多个片段(Android Studio中的新手)实现了我的主要活动。在我的导航片段中,我使用了Google提供的googleAutocomplete。
这里的代码在OnCreateView()中实现。
mPlace_Starting = (PlaceAutocompleteFragment)
this.getChildFragmentManager().findFragmentById(R.id.place_starting);
AutocompleteFilter countryFilter = new AutocompleteFilter.Builder()
.setTypeFilter(Place.TYPE_COUNTRY)
.setCountry("PH")
.build();
mPlace_Starting.setFilter(countryFilter);
mPlace_Starting.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
// TODO: Get info about the selected place:
Log.i(TAG, "Starting Place:" + place.getName());
Toast.makeText(getActivity(), "Starting Place: " + place.getName(),
Toast.LENGTH_SHORT).show();
double mLongitude = place.getLatLng().longitude;
double mLatitude = place.getLatLng().latitude;
mStartingpoint = new Waypoint(mLongitude,mLatitude);
mStartpoint = new GeoCoordinate(mLongitude,mLatitude);
}
@Override
public void onError(Status status) {
//TODO: Handle the Error.
Log.i(TAG, "An error occured: " + status);
}
});
我使用getChildFragmentManager()从Google充实了我的PlaceAutocompleteFragment小部件,因为小部件是要在另一个片段(我的导航片段)中充气的片段。