簡體   English   中英

放置自動完成未找到類“ com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable”

[英]Places AutoComplete Didn't find class “com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable”

我正在使用嵌入Google Places自動完成片段。 這是我的代碼。 當我觸摸搜索片段時,應用程序崩潰並拋出錯誤。

我的Java課

public class User extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener, OnMapReadyCallback {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_user);

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

    autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(Place place) {
            // TODO: Get info about the selected place.
            Log.i("Google Map", "Place: " + place.getName());
        }

        @Override
        public void onError(Status status) {
            // TODO: Handle the error.
            Log.i("Google Map", "An error occurred: " + status);
        }
    });

XML中的Fragmenet

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

logcat中的錯誤

06-27 23:12:39.247 21759-21759/af.com.urban I/art: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.location.places.AutocompleteFilter>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/safeparcel/AbstractSafeParcelable;
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.google.android.gms.location.places.ui.PlaceAutocompleteFragment.zzboi() ((null):-1)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.google.android.gms.location.places.ui.PlaceAutocompleteFragment.zza(com.google.android.gms.location.places.ui.PlaceAutocompleteFragment) ((null):-1)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.google.android.gms.location.places.ui.PlaceAutocompleteFragment$1.onClick(android.view.View) ((null):-1)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at boolean android.view.View.performClick() (View.java:6205)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at boolean android.widget.TextView.performClick() (TextView.java:11103)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.view.View$PerformClick.run() (View.java:23653)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:751)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.os.Looper.loop() (Looper.java:154)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6682)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1520)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1410)
06-27 23:12:39.247 21759-21759/af.com.urban I/art: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable" on path: DexPathList[[zip file "/data/app/af.com.urban-2/base.apk"],nativeLibraryDirectories=[/data/app/af.com.urban-2/lib/arm64, /system/lib64, /vendor/lib64]]
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:56)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:380)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.google.android.gms.location.places.ui.PlaceAutocompleteFragment.zzboi() ((null):-1)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.google.android.gms.location.places.ui.PlaceAutocompleteFragment.zza(com.google.android.gms.location.places.ui.PlaceAutocompleteFragment) ((null):-1)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.google.android.gms.location.places.ui.PlaceAutocompleteFragment$1.onClick(android.view.View) ((null):-1)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at boolean android.view.View.performClick() (View.java:6205)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at boolean android.widget.TextView.performClick() (TextView.java:11103)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.view.View$PerformClick.run() (View.java:23653)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.os.Handler.handleCallback(android.os.Message) (Handler.java:751)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.os.Handler.dispatchMessage(android.os.Message) (Handler.java:95)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.os.Looper.loop() (Looper.java:154)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void android.app.ActivityThread.main(java.lang.String[]) (ActivityThread.java:6682)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at java.lang.Object java.lang.reflect.Method.invoke!(java.lang.Object, java.lang.Object[]) (Method.java:-2)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run() (ZygoteInit.java:1520)
06-27 23:12:39.247 21759-21759/af.com.urban I/art:     at void com.android.internal.os.ZygoteInit.main(java.lang.String[]) (ZygoteInit.java:1410)

這是我的android minifest文件,我每次嘗試編譯不同版本的庫但沒有結果

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="af.com.urban">

<permission
    android:name="af.com.urban.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<uses-permission android:name="af.com.urban.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<application
    android:allowBackup="true"
    android:fullBackupContent="@xml/backup_descriptor"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity"
        android:theme="@style/Theme.AppCompat.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".Login" />
    <activity
        android:name=".User"
        android:label="@string/title_activity_user"
        android:theme="@style/AppTheme.NoActionBar" />
    <activity android:name=".Signup" />
    <activity android:name=".TripsActivity" />
    <!--
         The API key for Google Maps-based APIs is defined as a string resource.
         (See the file "res/values/google_maps_api.xml").
         Note that the API key is linked to the encryption key used to sign the APK.
         You need a different API key for each encryption key, including the release key that is used to
         sign the APK for publishing.
         You can define the keys for the debug and release targets in src/debug/ and src/release/. 
    -->
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/google_maps_key" />
    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>

    <activity
        android:name=".MapsActivity"
        android:label="@string/title_activity_maps"/>
</application>

我添加了您的代碼片段,但拋出了奇怪的錯誤。 android很生氣。

06-28 00:02:41.316 2509-2509/af.com.urban E/AndroidRuntime: FATAL EXCEPTION: main
                                                            Process: af.com.urban, PID: 2509
                                                            java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/location/places/AutocompleteFilter;
                                                                at com.google.android.gms.location.places.AutocompleteFilter$Builder.build(Unknown Source)
                                                                at af.com.urban.User.onCreate(User.java:91)
                                                                at android.app.Activity.performCreate(Activity.java:6942)
                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126)
                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880)
                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988)
                                                                at android.app.ActivityThread.-wrap14(ActivityThread.java)
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
                                                                at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                at android.os.Looper.loop(Looper.java:154)
                                                                at android.app.ActivityThread.main(ActivityThread.java:6682)
                                                                at java.lang.reflect.Method.invoke(Native Method)
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
                                                             Caused by: java.lang.ClassNotFoundException: com.google.android.gms.location.places.AutocompleteFilter
                                                                at java.lang.VMClassLoader.findLoadedClass(Native Method)
                                                                at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:742)
                                                                at java.lang.ClassLoader.loadClass(ClassLoader.java:362)
                                                                at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                                                                at com.google.android.gms.location.places.AutocompleteFilter$Builder.build(Unknown Source) 
                                                                at af.com.urban.User.onCreate(User.java:91) 
                                                                at android.app.Activity.performCreate(Activity.java:6942) 
                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) 
                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880) 
                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988) 
                                                                at android.app.ActivityThread.-wrap14(ActivityThread.java) 
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631) 
                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                at android.os.Looper.loop(Looper.java:154) 
                                                                at android.app.ActivityThread.main(ActivityThread.java:6682) 
                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
                                                             Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/safeparcel/AbstractSafeParcelable;
                                                                at com.google.android.gms.location.places.AutocompleteFilter$Builder.build(Unknown Source) 
                                                                at af.com.urban.User.onCreate(User.java:91) 
                                                                at android.app.Activity.performCreate(Activity.java:6942) 
                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) 
                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880) 
                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988) 
                                                                at android.app.ActivityThread.-wrap14(ActivityThread.java) 
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631) 
                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                at android.os.Looper.loop(Looper.java:154) 
                                                                at android.app.ActivityThread.main(ActivityThread.java:6682) 
                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
                                                             Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable" on path: DexPathList[[zip file "/data/app/af.com.urban-1/base.apk"],nativeLibraryDirectories=[/data/app/af.com.urban-1/lib/arm64, /system/lib64, /vendor/lib64]]
                                                                at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                at java.lang.ClassLoader.loadClass(ClassLoader.java:380)
                                                                at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
                                                                at com.google.android.gms.location.places.AutocompleteFilter$Builder.build(Unknown Source) 
                                                                at af.com.urban.User.onCreate(User.java:91) 
                                                                at android.app.Activity.performCreate(Activity.java:6942) 
                                                                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) 
                                                                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2880) 
                                                                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2988) 
                                                                at android.app.ActivityThread.-wrap14(ActivityThread.java) 
                                                                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631) 
                                                                at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                at android.os.Looper.loop(Looper.java:154) 
                                                                at android.app.ActivityThread.main(ActivityThread.java:6682) 
                                                                at java.lang.reflect.Method.invoke(Native Method) 
                                                                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) 
                                                                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410) 
 /**Use the below code snipet**/

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


AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
    .setTypeFilter(AutocompleteFilter.TYPE_FILTER_ADDRESS)
    .build();
autocompleteFragment.setFilter(typeFilter);

autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
    // TODO: Get info about the selected place.
    Log.i(TAG, "Place: " + place.getName());//get place details here
}

@Override
public void onError(Status status) {
    // TODO: Handle the error.
    Log.i(TAG, "An error occurred: " + status);
}
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM