2017-05-07 18 views
0

 Error谷歌的地方自動完成API中的標籤佈局片段

我嘗試使用谷歌地方自動填充API的標籤佈局片段。但是因爲這個,我無法做到。我能做什麼?

出現的錯誤是: 錯誤:(51,54)錯誤:不兼容的類型:片段不能被轉換到PlaceAutocompleteFragment

XML文件是:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<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" 
    /> 

片段代碼:

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.Status; 
import com.google.android.gms.location.places.Place; 
import com.google.android.gms.location.places.Places; 
import 
com.google.android.gms.location.places.ui.PlaceAutocompleteFragment; 
import 
com.google.android.gms.location.places.ui.PlaceSelectionListener; 

import butterknife.ButterKnife; 


public class LocationSearchFragment extends Fragment implements 
GoogleApiClient.OnConnectionFailedListener { 
ViewGroup rootView; 
String TAG="Location Search:"; 
private FragmentActivity myContext; 

private Context context; private GoogleApiClient mGoogleApiClient; 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    rootView = (ViewGroup) inflater 

      .inflate(R.layout.place_search, container, false); 


    mGoogleApiClient = new GoogleApiClient 
      .Builder(rootView.getContext()) 
      .addApi(Places.GEO_DATA_API) 
      .addApi(Places.PLACE_DETECTION_API) 
      .build(); 


    PlaceAutocompleteFragment places= (PlaceAutocompleteFragment) 
      getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment); 

    places.setOnPlaceSelectedListener(new PlaceSelectionListener() { 
     @Override 
     public void onPlaceSelected(Place place) { 

      Toast.makeText(getContext(),place.getName(),Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onError(Status status) { 

      Toast.makeText(getContext(),status.toString(),Toast.LENGTH_SHORT).show(); 

     } 
    }); 

    ButterKnife.bind(this, rootView); 
    return rootView; 
} 
public void cleanUp(){ 
    getFragmentManager().beginTransaction().remove().commit(); 
} 
@Override 
public void onConnectionFailed(ConnectionResult result) { 
    // An unresolvable error has occurred and a connection to Google APIs 
    // could not be established. Display an error message, or handle 
    // the failure silently 

    // ... 
} 
@Override 
public void onAttach(Activity activity) { 
    myContext=(FragmentActivity) activity; 
    super.onAttach(activity); 
} 

} 

整個日誌:

05-07 10:38:23.452 27969-27969/com.example.apple.project2 E/AndroidRuntime: FATAL EXCEPTION: main 
                     Process: com.example.apple.project2, PID: 27969 
                     android.view.InflateException: Binary XML file line #8: Binary XML file line #8: Error inflating class fragment 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:551) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:429) 
                      at com.example.apple.project2.LocationSearchFragment.onCreateView(LocationSearchFragment.java:38) 
                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192) 
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299) 
                      at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 
                      at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:753) 
                      at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363) 
                      at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149) 
                      at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103) 
                      at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984) 
                      at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626) 
                      at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143) 
                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1268) 
                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1116) 
                      at android.support.v4.view.ViewPager$3.run(ViewPager.java:273) 
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911) 
                      at android.view.Choreographer.doCallbacks(Choreographer.java:686) 
                      at android.view.Choreographer.doFrame(Choreographer.java:619) 
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897) 
                      at android.os.Handler.handleCallback(Handler.java:739) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:148) 
                      at android.app.ActivityThread.main(ActivityThread.java:7331) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
                     Caused by: android.view.InflateException: Binary XML file line #8: Error inflating class fragment 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:794) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716) 
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:847) 
                      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:527) 
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:429)  
                      at com.example.apple.project2.LocationSearchFragment.onCreateView(LocationSearchFragment.java:38)  
                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)  
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)  
                      at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)  
                      at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:753)  
                      at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)  
                      at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)  
                      at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)  
                      at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984)  
                      at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626)  
                      at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)  
                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)  
                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1116)  
                      at android.support.v4.view.ViewPager$3.run(ViewPager.java:273)  
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)  
                      at android.view.Choreographer.doCallbacks(Choreographer.java:686)  
                      at android.view.Choreographer.doFrame(Choreographer.java:619)  
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)  
                      at android.os.Handler.handleCallback(Handler.java:739)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:148)  
                      at android.app.ActivityThread.main(ActivityThread.java:7331)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  
                     Caused by: java.lang.IllegalArgumentException: Binary XML file line #8: Duplicate id 0x7f0d0165, 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:2227) 
                      at android.app.FragmentController.onCreateView(FragmentController.java:99) 
                      at android.app.Activity.onCreateView(Activity.java:6085) 
                      at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:36) 
                      at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:766) 
                      at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:716)  
                      at android.view.LayoutInflater.rInflate(LayoutInflater.java:847)  
                      at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:810)  
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:527)  
                      at android.view.LayoutInflater.inflate(LayoutInflater.java:429)  
                      at com.example.apple.project2.LocationSearchFragment.onCreateView(LocationSearchFragment.java:38)  
                      at android.support.v4.app.Fragment.performCreateView(Fragment.java:2192)  
                      at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1299)  
                      at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528)  
                      at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:753)  
                      at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2363)  
                      at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2149)  
                      at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)  
                      at android.support.v4.app.FragmentManagerImpl.execSingleAction(FragmentManager.java:1984)  
                      at android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:626)  
                      at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:143)  
                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1268)  
                      at android.support.v4.view.ViewPager.populate(ViewPager.java:1116)  
                      at android.support.v4.view.ViewPager$3.run(ViewPager.java:273)  
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)  
                      at android.view.Choreographer.doCallbacks(Choreographer.java:686)  
                      at android.view.Choreographer.doFrame(Choreographer.java:619)  
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)  
                      at android.os.Handler.handleCallback(Handler.java:739)  
                      at android.os.Handler.dispatchMessage(Handler.java:95)  
                      at android.os.Looper.loop(Looper.java:148)  
                      at android.app.ActivityThread.main(ActivityThread.java:7331)  
                      at java.lang.reflect.Method.invoke(Native Method)  
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)  
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)  

10月5日至7日:38:25.192 27969-27969/com.example.apple.project2 I /過程:發送信號。 PID:27969 SIG:9

+0

你可以張貼在地圖片段XML文件的代碼? – pRaNaY

+0

@I pRaNaY我將它改爲getActivity()。getFragmentManager。當我在該選項卡中時,它現在工作正常。但是,當我改變標籤整個應用程序崩潰,這是我得到的錯誤。我能做什麼? E/AndroidRuntime:致命異常:主 工藝:com.example.apple.project2,PID:22496 android.view.InflateException:二進制XML文件行#8:二進制XML文件行#8:錯誤充氣類片段 –

+0

閱讀堆棧跟蹤的其餘部分。他們不是唯一的錯誤,可能 –

回答

0

首先錯誤,您導入錯誤的片段。

import android.support.v4.app.Fragment 

而不是

import android.app.Fragment 

二錯誤,您正在做不必要的XML文件,並把額外的片段另一個片段中。

嘗試啓動過這個

public class LocationSearchFragment extends PlaceAutocompleteFragment implements 
    GoogleApiClient.OnConnectionFailedListener, 
    PlaceSelectionListener { 

    public static final String TAG="Location Search:"; 
    private GoogleApiClient mGoogleApiClient; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setOnPlaceSelectedListener(this); 
    } 

    @Override 
    public void onPlaceSelected(Place place) { 
     Toast.makeText(getActivity(), 
       place.getName(),Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onError(Status status) { 
     Toast.makeText(getActivity() , 
      status.toString(),Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
    public void onConnectionFailed(ConnectionResult result) { 

     } 

    @Override 
    public void onAttach(Activity activity) { 
     mGoogleApiClient = new GoogleApiClient 
      .Builder(activity) 
      .addApi(Places.GEO_DATA_API) 
      .addApi(Places.PLACE_DETECTION_API) 
      .build(); 
    } 

} 
+0

adapter.addFragment(new LocationSearchFragment(),「Search」);它在這裏拋出一個錯誤,我不能將它添加到適配器,如果它不擴展片段:/ –

+0

您的適配器然後使用錯誤的片段類。看到我的答案的頂部 –

相關問題