0

Android開発の初心者で、Androidアプリケーションを完成しようとしています。自動補完を使用して場所を検索し、その場所をGoogleマップにマークすることができます。MapCompleteTextViewがMapActivityで動作していません

は、ここに私のCityMapsActivity.javaファイルここ

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/constraintLayout_map_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".CityMapsActivity"> 

    <AutoCompleteTextView 
     android:id="@+id/editText_source" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="16dp" 
     android:layout_marginStart="16dp" 
     android:layout_marginTop="16dp" 
     android:ems="10" 
     android:hint="Select Source" 
     android:inputType="textPersonName" 
     app:layout_constraintEnd_toStartOf="@+id/button_source_update" 
     app:layout_constraintHorizontal_bias="0.5" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" /> 

    <Button 
     android:id="@+id/button_source_update" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="16dp" 
     android:layout_marginStart="16dp" 
     android:text="Set Source" 
     app:layout_constraintBaseline_toBaselineOf="@+id/editText_source" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintHorizontal_bias="0.5" 
     app:layout_constraintStart_toEndOf="@+id/editText_source" /> 

    <fragment xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/map" 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="8dp" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     app:layout_constraintEnd_toEndOf="parent" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toBottomOf="@+id/button_source_update" 
     tools:context=".CityMapsActivity" /> 

</android.support.constraint.ConstraintLayout> 

そして、私のactivity_city_maps.xmlファイル

package com.softvision.gotogether.app; 

//Imports hidden 

public class CityMapsActivity extends FragmentActivity implements 
     GoogleMap.OnMyLocationButtonClickListener, 
     GoogleMap.OnMyLocationClickListener, 
     OnMapReadyCallback, 
     OnRequestPermissionsResultCallback, 
     GoogleApiClient.OnConnectionFailedListener, 
     GoogleApiClient.ConnectionCallbacks{ 

    /* AUTO-COMPLETE PROPERTIES 
    * ----------------------------------------------------------------------------------------------*/ 
    private static final String LOG_TAG = "CityMapsActivity"; 
    private GoogleApiClient client; 
    private static final int GOOGLE_API_CLIENT_ID = 0; 
    private static final LatLngBounds BOUNDS_MOUNTAIN_VIEW = new LatLngBounds(
      new LatLng(37.398160, -122.180831), new LatLng(37.430610, -121.972090)); 
    private PlaceArrayAdapter mPlaceArrayAdapter; 
    private AutoCompleteTextView editTextSource; 


    /* MAP PROPERTIES 
    * ----------------------------------------------------------------------------------------------*/ 
    private GoogleMap mMap; 
    private ArrayList<LatLng> markerPoints = new ArrayList<>(); 
    //Request code for location permission request. 
    private static final int LOCATION_PERMISSION_REQUEST_CODE = 1; 
    //Flag indicating whether a requested permission has been denied after returning in 
    private boolean mPermissionDenied = false; 

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

     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 

     // Location Auto complete 
     client = new GoogleApiClient.Builder(CityMapsActivity.this) 
       .addApi(Places.GEO_DATA_API) 
       .enableAutoManage(this, GOOGLE_API_CLIENT_ID, this) 
       .addConnectionCallbacks(this) 
       .build(); 

     editTextSource = (AutoCompleteTextView) findViewById(R.id.editText_source); 
     editTextSource.setThreshold(3); 

     editTextSource.setOnItemClickListener(autoCompleteClickListener); 
     mPlaceArrayAdapter = new PlaceArrayAdapter(this, android.R.layout.simple_list_item_1,BOUNDS_MOUNTAIN_VIEW, null); 
     editTextSource.setAdapter(mPlaceArrayAdapter); 
    } 

    /* ---------------------------------------------------------------------------------------------------- 
    BEGIN: LOCATION AUTO COMPLETE SECTION 
    ------------------------------------------------------------------------------------------------------*/ 
    private AdapterView.OnItemClickListener autoCompleteClickListener = new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      final PlaceArrayAdapter.PlaceAutocomplete item = mPlaceArrayAdapter.getItem(position); 
      final String placeId = String.valueOf(item.placeId); 
      Log.i(LOG_TAG, "Selected: " + item.description); 
      PendingResult<PlaceBuffer> placeResult = Places.GeoDataApi.getPlaceById(client, placeId); 
      placeResult.setResultCallback(mUpdatePlaceDetailsCallback); 
      Log.i(LOG_TAG, "Fetching details for ID: " + item.placeId); 
     } 
    }; 

    private ResultCallback<PlaceBuffer> mUpdatePlaceDetailsCallback 
      = new ResultCallback<PlaceBuffer>() { 
     @Override 
     public void onResult(PlaceBuffer places) { 
      if (!places.getStatus().isSuccess()) { 
       Log.e(LOG_TAG, "Place query did not complete. Error: " + 
         places.getStatus().toString()); 
       return; 
      } 
      // Selecting the first object buffer. 
      final Place place = places.get(0); 
      /* 
      CharSequence attributions = places.getAttributions(); 
      mNameTextView.setText(Html.fromHtml(place.getName() + "")); 
      mAddressTextView.setText(Html.fromHtml(place.getAddress() + "")); 
      mIdTextView.setText(Html.fromHtml(place.getId() + "")); 
      mPhoneTextView.setText(Html.fromHtml(place.getPhoneNumber() + "")); 
      mWebTextView.setText(place.getWebsiteUri() + ""); 
      if (attributions != null) { 
       mAttTextView.setText(Html.fromHtml(attributions.toString())); 
      }*/ 
     } 
    }; 

    /* ---------------------------------------------------------------------------------------------------- 
    END: LOCATION AUTO COMPLETE SECTION 
    ------------------------------------------------------------------------------------------------------*/ 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     // Enable my location option for map. 
     enableMyLocation(); 

     mMap.setOnMyLocationButtonClickListener(this); 
     mMap.setOnMyLocationClickListener(this); 

     // Creating Markers by clicking on map 
     mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() { 
      @Override 
      public void onMapClick(LatLng latLng) { 
       MarkerOptions options = new MarkerOptions(); 

       if(markerPoints.size()>1){ 
        markerPoints.clear(); 
        mMap.clear(); 
       } 

       // Add new Point 
       markerPoints.add(latLng); 
       options.position(latLng); 

       if(markerPoints.size()==1){ 
        options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)); 
        options.title("Source"); 
        editTextSource.setText(getCompleteAddressString(latLng.latitude, latLng.longitude)); 
       }else if(markerPoints.size()==2){ 
        options.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)); 
        options.title("Destination"); 
       } 
       mMap.addMarker(options); 

       if(markerPoints.size() >= 2){ 
        LatLng origin = markerPoints.get(0); 
        LatLng dest = markerPoints.get(1); 

        String url = getDirectionsUrl(origin, dest); 
        DownloadTask downloadTask = new DownloadTask(); 
        downloadTask.execute(url); 
       } 
      } 
     }); 

     mMap.setOnMarkerClickListener((new GoogleMap.OnMarkerClickListener(){ 
      @Override 
      public boolean onMarkerClick(Marker marker) { 
       if(marker.isInfoWindowShown()) { 
        marker.hideInfoWindow(); 
       } else { 
        marker.showInfoWindow(); 
       } 
       //.setText(myMarker.getTitle()); //Change TextView text here like this 
       return true; 
      } 
     })); 

     // Add a marker in Sydney and move the camera 
     /* 
     LatLng destination = new LatLng(12.354509, 76.603085); 
     mMap.addMarker(new MarkerOptions().position(destination).title("Softvision, LLC (DBA Software Paradigms Infotech Pvt Ltd)")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(destination)); 
     mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(destination.latitude, destination.longitude), 12.0f)); 
     */ 
    } 

    @Override 
    public void onMyLocationClick(@NonNull Location location) { 
     Toast.makeText(this, "Current location:\n" + location, Toast.LENGTH_LONG).show(); 
    } 

    private void enableMyLocation() { 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      // Permission to access the location is missing. 
      PermissionUtils.requestPermission(this, LOCATION_PERMISSION_REQUEST_CODE, Manifest.permission.ACCESS_FINE_LOCATION, true); 
     } else if (mMap != null) { 
      // Access to the location has been granted to the app. 
      mMap.setMyLocationEnabled(true); 
     } 
    } 
    @Override 
    public boolean onMyLocationButtonClick() { 
     Toast.makeText(this, "Searching for location...", Toast.LENGTH_SHORT).show(); 
     // Return false so that we don't consume the event and the default behavior still occurs 
     // (the camera animates to the user's current position). 
     return false; 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,@NonNull int[] grantResults) { 
     if (requestCode != LOCATION_PERMISSION_REQUEST_CODE) { 
      return; 
     } 
     if (PermissionUtils.isPermissionGranted(permissions, grantResults, Manifest.permission.ACCESS_FINE_LOCATION)) { 
      // Enable the my location layer if the permission has been granted. 
      enableMyLocation(); 
     } else { 
      // Display the missing permission error dialog when the fragments resume. 
      mPermissionDenied = true; 
     } 
    } 

    @Override 
    protected void onResumeFragments() { 
     super.onResumeFragments(); 
     if (mPermissionDenied) { 
      // Permission was not granted, display error dialog. 
      showMissingPermissionError(); 
      mPermissionDenied = false; 
     } 
    } 

    private void showMissingPermissionError() { 
     PermissionUtils.PermissionDeniedDialog.newInstance(true).show(getSupportFragmentManager(), "dialog"); 
    } 


    /* ------------------------------------------------------------------------------------------------------------- 
    BEGIN [GoogleApiClient] :Overrides for : 
     GoogleApiClient.OnConnectionFailedListener, 
     GoogleApiClient.ConnectionCallback 
    ---------------------------------------------------------------------------------------------------------------*/ 
    @Override 
    public void onConnected(@Nullable Bundle bundle) { 
     mPlaceArrayAdapter.setGoogleApiClient(client); 
     Log.i(LOG_TAG, "Google Places API connected."); 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 
     mPlaceArrayAdapter.setGoogleApiClient(null); 
     Log.e(LOG_TAG, "Google Places API connection suspended."); 
    } 

    @Override 
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
     Log.e(LOG_TAG, "Google Places API connection failed with error code: " 
       + connectionResult.getErrorCode()); 

     Toast.makeText(this, 
       "Google Places API connection failed with error code:" + connectionResult.getErrorCode(), Toast.LENGTH_LONG) 
       .show(); 
    } 
    /* ------------------------------------------------------------------------------------------------------------- 
    END [GoogleApiClient] 
    ---------------------------------------------------------------------------------------------------------------*/ 

    /*-------------------------------------------------------------------------------------------------------------*/ 
    /* Map Utility Section */ 
    /*-------------------------------------------------------------------------------------------------------------*/ 
    private String getCompleteAddressString(double LATITUDE, double LONGITUDE) { 
     String strAdd = ""; 
     Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
     try { 
      List<Address> addresses = geocoder.getFromLocation(LATITUDE,LONGITUDE, 1); 
      if (addresses != null) { 
       Address returnedAddress = addresses.get(0); 
       StringBuilder strReturnedAddress = new StringBuilder(""); 
       for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) { 
        strReturnedAddress.append(returnedAddress.getAddressLine(i)).append(","); 
       } 
       strAdd = strReturnedAddress.toString(); 
      } else { 
       strAdd = "No Address returned!"; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
      strAdd = e.getMessage(); 
     } 
     return strAdd; 
    } 

    private String getDirectionsUrl(LatLng origin,LatLng dest){ 
     // Origin of route 
     String str_origin = String.format("origin=%s,%s", origin.latitude, origin.longitude); 
     // Destination of route 
     String str_dest = "destination="+dest.latitude+","+dest.longitude; 
     // Sensor enabled 
     String sensor = "sensor=false"; 
     // Building the parameters to the web service 
     String parameters = str_origin+"&"+str_dest+"&"+sensor; 
     // Output format 
     String output = "json"; 
     String url = "https://maps.googleapis.com/maps/api/directions/"+output+"?"+parameters; 
     return url; 
    } 

    @SuppressLint("LongLogTag") 
    private String downloadUrl(String strUrl) throws IOException { 
     String data = ""; 
     InputStream iStream = null; 
     HttpURLConnection urlConnection = null; 
     try{ 
      URL url = new URL(strUrl); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      // Connecting to url 
      urlConnection.connect(); 
      // Reading data from url 
      iStream = urlConnection.getInputStream(); 
      BufferedReader br = new BufferedReader(new InputStreamReader(iStream)); 
      StringBuffer sb = new StringBuffer(); 

      String line = ""; 
      while((line = br.readLine()) != null){ 
       sb.append(line); 
      } 

      data = sb.toString(); 
      br.close(); 
     }catch(Exception e){ 
      Log.d("Exception while downloading url", e.toString()); 
     }finally{ 
      iStream.close(); 
      urlConnection.disconnect(); 
     } 
     return data; 
    } 

    // Fetches data from url passed 
    private class DownloadTask extends AsyncTask<String, Void, String> { 

     // Downloading data in non-ui thread 
     @Override 
     protected String doInBackground(String... url) { 
      // For storing data from web service 
      String data = ""; 
      try{ 
       // Fetching the data from web service 
       data = downloadUrl(url[0]); 
      }catch(Exception e){ 
       Log.d("Background Task",e.toString()); 
      } 
      return data; 
     } 

     // Executes in UI thread, after the execution of 
     // doInBackground() 
     @Override 
     protected void onPostExecute(String result) { 
      super.onPostExecute(result); 
      ParserTask parserTask = new ParserTask(); 
      // Invokes the thread for parsing the JSON data 
      parserTask.execute(result); 
     } 
    } 


    private class ParserTask extends AsyncTask<String, Integer, List<List<HashMap<String,String>>>> { 
     @Override 
     protected List<List<HashMap<String, String>>> doInBackground(String... jsonData) { 

      JSONObject jObject; 
      List<List<HashMap<String, String>>> routes = null; 

      try{ 
       jObject = new JSONObject(jsonData[0]); 
       GmapUtility parser = new GmapUtility(); 
       // Starts parsing data 
       routes = parser.parseJson(jObject); 
      }catch(Exception e){ 
       e.printStackTrace(); 
      } 
      return routes; 
     } 

     @Override 
     protected void onPostExecute(List<List<HashMap<String, String>>> result) { 
      ArrayList<LatLng> points = null; 
      PolylineOptions lineOptions = null; 
      MarkerOptions markerOptions = new MarkerOptions(); 

      // Traversing through all the routes 
      for(int i=0;i<result.size();i++){ 
       points = new ArrayList<LatLng>(); 
       lineOptions = new PolylineOptions(); 

       // Fetching i-th route 
       List<HashMap<String, String>> path = result.get(i); 

       // Fetching all the points in i-th route 
       for(int j=0;j<path.size();j++){ 
        HashMap<String,String> point = path.get(j); 

        double lat = Double.parseDouble(point.get("lat")); 
        double lng = Double.parseDouble(point.get("lng")); 
        LatLng position = new LatLng(lat, lng); 

        points.add(position); 
       } 

       // Adding all the points in the route to LineOptions 
       lineOptions.addAll(points) 
         .width(12) 
         .color(Color.parseColor("#05b1fb"))//Google maps blue color 
         .geodesic(true); 
      } 

      // Drawing polyline in the Google Map for the i-th route 
      mMap.addPolyline(lineOptions); 
     } 
    } 
} 

だとここで私のPlaceArrayAdapter.javaファイル

package com.softvision.gotogether.app; 

/*imports hidden*/ 

public class PlaceArrayAdapter 
     extends ArrayAdapter<PlaceArrayAdapter.PlaceAutocomplete> implements Filterable { 
    private static final String TAG = "PlaceArrayAdapter"; 
    private GoogleApiClient mGoogleApiClient; 
    private AutocompleteFilter mPlaceFilter; 
    private LatLngBounds mBounds; 
    private ArrayList<PlaceAutocomplete> mResultList; 

    /** 
    * Constructor 
    * 
    * @param context Context 
    * @param resource Layout resource 
    * @param bounds Used to specify the search bounds 
    * @param filter Used to specify place types 
    */ 
    public PlaceArrayAdapter(Context context, int resource, LatLngBounds bounds,AutocompleteFilter filter) { 
     super(context, resource); 
     mBounds = bounds; 
     mPlaceFilter = filter; 
    } 

    public void setGoogleApiClient(GoogleApiClient googleApiClient) { 
     if (googleApiClient == null || !googleApiClient.isConnected()) { 
      mGoogleApiClient = null; 
     } else { 
      mGoogleApiClient = googleApiClient; 
     } 
    } 

    @Override 
    public int getCount() { 
     return mResultList.size(); 
    } 

    @Override 
    public PlaceAutocomplete getItem(int position) { 
     return mResultList.get(position); 
    } 

    private ArrayList<PlaceAutocomplete> getPredictions(CharSequence constraint) { 
     if (mGoogleApiClient != null) { 
      Log.i(TAG, "Executing autocomplete query for: " + constraint); 
      PendingResult<AutocompletePredictionBuffer> results = 
        Places.GeoDataApi.getAutocompletePredictions(mGoogleApiClient, constraint.toString(),mBounds, mPlaceFilter); 
      // Wait for predictions, set the timeout. 
      AutocompletePredictionBuffer autocompletePredictions = results.await(60, TimeUnit.SECONDS); 
      final Status status = autocompletePredictions.getStatus(); 
      if (!status.isSuccess()) { 
       Toast.makeText(getContext(), "Error: " + status.toString(),Toast.LENGTH_SHORT).show(); 
       Log.e(TAG, "Error getting place predictions: " + status.toString()); 
       autocompletePredictions.release(); 
       return null; 
      } 

      Log.i(TAG, "Query completed. Received " + autocompletePredictions.getCount() 
        + " predictions."); 
      Iterator<AutocompletePrediction> iterator = autocompletePredictions.iterator(); 
      ArrayList resultList = new ArrayList<>(autocompletePredictions.getCount()); 
      while (iterator.hasNext()) { 
       AutocompletePrediction prediction = iterator.next(); 
       resultList.add(new PlaceAutocomplete(prediction.getPlaceId(),prediction.getFullText(null))); 
      } 
      // Buffer release 
      autocompletePredictions.release(); 
      return resultList; 
     } 
     Log.e(TAG, "Google API client is not connected."); 
     return null; 
    } 

    @Override 
    public Filter getFilter() { 
     Filter filter = new Filter() { 
      @Override 
      protected FilterResults performFiltering(CharSequence constraint) { 
       FilterResults results = new FilterResults(); 
       if (constraint != null) { 
        // Query the autocomplete API for the entered constraint 
        mResultList = getPredictions(constraint); 
        if (mResultList != null) { 
         // Results 
         results.values = mResultList; 
         results.count = mResultList.size(); 
        } 
       } 
       return results; 
      } 

      @Override 
      protected void publishResults(CharSequence constraint, FilterResults results) { 
       if (results != null && results.count > 0) { 
        // The API returned at least one result, update the data. 
        notifyDataSetChanged(); 
       } else { 
        // The API did not return any results, invalidate the data set. 
        notifyDataSetInvalidated(); 
       } 
      } 
     }; 
     return filter; 
    } 

    class PlaceAutocomplete { 
     public CharSequence placeId; 
     public CharSequence description; 

     PlaceAutocomplete(CharSequence placeId, CharSequence description) { 
      this.placeId = placeId; 
      this.description = description; 
     } 

     @Override 
     public String toString() { 
      return description.toString(); 
     } 
    } 
} 
です0 ここ

、私はアプリケーションをビルドするとき、私は次のようにGradleのコンソールに警告を構築し、構築し取得していますが、成功しました:

:app:compileDebugJavaWithJavac 
E:\AndroidApps\GoTogether\app\src\main\java\com\softvision\gotogether\app\PlaceArrayAdapter.java:88: warning: [unchecked] unchecked call to add(E) as a member of the raw type ArrayList 
       resultList.add(new PlaceAutocomplete(prediction.getPlaceId(),prediction.getFullText(null))); 
          ^
    where E is a type-variable: 
    E extends Object declared in class ArrayList 
E:\AndroidApps\GoTogether\app\src\main\java\com\softvision\gotogether\app\PlaceArrayAdapter.java:92: warning: [unchecked] unchecked conversion 
      return resultList; 
       ^
    required: ArrayList<PlaceArrayAdapter.PlaceAutocomplete> 
    found: ArrayList 
E:\AndroidApps\GoTogether\app\src\main\java\com\softvision\gotogether\app\GmapUtility.java:47: warning: [unchecked] unchecked call to add(E) as a member of the raw type List 
          path.add(hm); 
            ^
    where E is a type-variable: 
    E extends Object declared in interface List 
E:\AndroidApps\GoTogether\app\src\main\java\com\softvision\gotogether\app\GmapUtility.java:50: warning: [unchecked] unchecked method invocation: method add in interface List is applied to given types 
        routes.add(path); 
          ^
    required: E 
    found: List 
    where E is a type-variable: 
    E extends Object declared in interface List 
E:\AndroidApps\GoTogether\app\src\main\java\com\softvision\gotogether\app\GmapUtility.java:50: warning: [unchecked] unchecked conversion 
        routes.add(path); 
          ^
    required: E 
    found: List 
    where E is a type-variable: 
    E extends Object declared in interface List 
5 warnings 

そして、私は自分のデバイス上でアプリケーションを実行すると、それはクラッシュです。以下のようにコンソールを実行するとエラーが発生します。

Exception_1 = java.lang.ClassNotFoundException: Didn't find class "com.qualcomm.qti.Performance" on path: DexPathList[[],nativeLibraryDirectories=[/system/lib64, /vendor/lib64]] 
V/BoostFramework: BoostFramework() : mPerf = null 
D/[email protected][CityMapsActivity]: ViewPostImeInputStage processPointer 1 
D/InputMethodManager: ISS - flag : 0Pid : 21012 view : com.softvision.gotogether.app 
D/[email protected][CityMapsActivity]: MSG_RESIZED: ci=Rect(0, 42 - 0, 0) vi=Rect(0, 42 - 0, 494) or=1 
I/PlaceArrayAdapter: Executing autocomplete query for: usa 
E/PlaceArrayAdapter: Error getting place predictions: Status{statusCode=ERROR, resolution=null} 

私を助けてください。

答えて

0

の中にアプリのグラデルファイルでmultiDexEnabled trueを設定してみてください。

そして、AutoCompleteTextViewのカスタムアダプターの代わりに、デフォルトのArrayAdapterを使用することをお勧めします。

EDIT:

ArrayAdapterを使用する標準的な方法は次のとおりです。AutoCompleteTextViewため

// The sample String array, you can use either this or List<String> 
String[] countries = getResources().getStringArray(R.array.list_of_countries); 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, countries); 
editTextSource.setAdapter(adapter); 

Androidのドキュメント:https://developer.android.com/reference/android/widget/AutoCompleteTextView.html

便利なチュートリアル:そのためhttps://www.tutorialspoint.com/android/android_auto_complete.htm

+0

感謝。私はこれを試して、アップデートを投稿します。デフォルトのArrayAdapterの参照やサンプルを取得できますか? – 55SK55

+0

確かに、編集済み... –

関連する問題