Reputation: 487
I am using embed google places autocomplete fragment. here is my code. when I touch the search fragment the app crash and throw an error.
My Java Class
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);
}
});
Fragmenet in xml
<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" />
Error in 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)
Here is my android minifest file how every i tried to complie different version of library but no result
<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>
I add your snipet code but throw weird errors. android got very angry.
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)
Upvotes: 0
Views: 1028
Reputation: 1151
/**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);
}
});
Upvotes: 1