在扩充布局时,二进制xml文件行#0错误

时间:2018-02-26 18:57:43

标签: android android-layout

我正在尝试在片段中实现PlaceAutoCompleteFragment。我最终得到了这个from official documentation):

public class SecondFragment extends Fragment
        implements OnMapReadyCallback {

      PlaceAutocompleteFragment placeAutoComplete;
      .....

      @Nullable
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View view = inflater.inflate(R.layout.fragment_second, null, false);


        // Create Map
        if (savedInstanceState != null) {
            mLastKnownLocation = savedInstanceState.getParcelable(KEY_LOCATION);
            mCameraPosition = savedInstanceState.getParcelable(KEY_CAMERA_POSITION);
            latlang.Lat = mLastKnownLocation.getLatitude();
            latlang.Lang = mLastKnownLocation.getLongitude();
        }

        // Construct a FusedLocationProviderClient.
        mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(getContext());
        getLocationPermission();
        getDeviceLocation();

        placeAutoComplete = (PlaceAutocompleteFragment) getActivity().getFragmentManager().findFragmentById(R.id.place_autocomplete);
        placeAutoComplete.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {

                    Log.d("Maps", "Place selected: " + place.getName());
                }

                @Override
                public void onError(Status status) {
                    Log.d("Maps", "An error occurred: " + status);
                }
            });


        SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

        //Search Place


        return view;
      }

并且相应的布局是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SecondFragment"
    android:orientation="vertical"
    android:weightSum="1">

    <fragment
        android:id="@+id/place_autocomplete"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
        />

    <fragment
        android:id="@+id/map"
        class="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


</LinearLayout>

所以,我得到了一个searchbar,但是应用程序崩溃了,错误:

Process: com.example.phocast, PID: 6141
    android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class fragment
    Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class fragment
    Caused by: java.lang.IllegalArgumentException: Binary XML file line #0: Duplicate id 0x7f0a0094, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.location.places.ui.PlaceAutocompleteFragment
      at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:3541)
      at android.app.FragmentController.onCreateView(FragmentController.java:98)
      at android.app.Activity.onCreateView(Activity.java:6219)
      at android.support.v4.app.BaseFragmentActivityApi14.onCreateView(BaseFragmentActivityApi14.java:41)
      at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:67)
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
      at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
      at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
      at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
      at com.example.phocast.SecondFragment.onCreateView(SecondFragment.java:76)

SecondFragment.java第76行只是onCreateView的布局充气线:

View view = inflater.inflate(R.layout.fragment_second, null, false);

有一点是文档要求将上述代码放在activity中,但我已将其放在fragment内并使用getActivity().getFragmentManager()

这可能导致错误吗?

0 个答案:

没有答案