2

Я использую приемник для отображения карты и местоположения. Я звоню в приемник местоположения, когда карта готова и показывает маркер на карте после получения местоположения из приемника местоположения, все это в методе setMap().Показывать номер на снекбаре, когда я получаю местоположение от приемника местоположения

Когда я получаю местоположение, я вижу некоторые цифры на snackbar, я не знаю, откуда он, нигде я не показываю его. Я показываю закуски, чтобы показать интернет и gps-оповещение. Но это происходит из ниоткуда.

выглядит так:

enter image description here

Что это ??

Код:

public class SearchMerchantFragment extends Fragment implements GetSearchedMerchantsAsyncTask.GetSearchedMerchantsCallBack, OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

    LocationListener[] mLocationListeners = new LocationListener[]{ 
      new LocationListener(LocationManager.NETWORK_PROVIDER), 
      new LocationListener(LocationManager.GPS_PROVIDER) 

    }; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.fragment_search_merchant, container, false); 

     setUpUI(view); 

     return view; 
    } 


    public void setUpUI(View view) { 

     setUpMapIfNeeded(); 


     sessionData = new SessionData(getActivity()); 
     sessionUserId = sessionData.getString("user_id", "-1"); 
     access_token = sessionData.getString("api_key", "-1"); 


     mLocationsList = new ArrayList<>(); 
     markers = new ArrayList<>(); 

     edtSearch = (EditText) view.findViewById(R.id.edtSearch); 
     parentLayout = (RelativeLayout) view.findViewById(R.id.parentLayout); 
     rv_fetch_merchants = (RecyclerView) view.findViewById(R.id.rv_fetch_merchants); 
     merchantsList = new ArrayList<Merchants>(); 
     merchantsAdapter = new SearchedMerchantsAdapter(this.getContext(), merchantsList); 
     rv_fetch_merchants.setLayoutManager(new LinearLayoutManager(getActivity())); 
     rv_fetch_merchants.setAdapter(merchantsAdapter); 
     rv_fetch_merchants.setHasFixedSize(true); 
     rv_fetch_merchants.setItemViewCacheSize(30); 
     rv_fetch_merchants.setDrawingCacheEnabled(true); 
     rv_fetch_merchants.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH); 


    } 

    //get searched merchants 
    public void accessMerchants() { 

     new GetSearchedMerchantsAsyncTask(getActivity(), SearchMerchantFragment.this).execute(access_token, sessionUserId, String.valueOf(mLastLocation.getLatitude()), String.valueOf(mLastLocation.getLongitude())); 

    } 

    @Override 
    public void doPostExecute(ArrayList<Merchants> merchantsArrayList) { 

     merchantsList.clear(); 
     merchantsList.addAll(merchantsArrayList); 
     merchantsAdapter.notifyDataSetChanged(); 

     for (Merchants merchants : merchantsList) { 
      LatLng latLng = new LatLng(merchants.getLatitude(), merchants.getLongitude()); 
      MarkerOptions marker = new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)).title(merchants.getKirana_name()); 
      Marker m = mGoogleMap.addMarker(marker); 
      markers.add(m); 
     } 

    } 

    public void showAlert(String alert) { 

     Snackbar snackbar = Snackbar.make(parentLayout, alert, Snackbar.LENGTH_LONG); 
     snackbar.show(); // Don’t forget to show! 
    } 

    private void setUpMapIfNeeded() { 
     if (mGoogleMap == null) { 
      mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map_fragment); 
      mapFragment.getMapAsync(this); 

     } 
    } 

    //setup map 

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

     buildGoogleApiClient(); 

     mGoogleApiClient.connect(); 

     mapConnected = true; 

     if (mapConnected) { 
      if (CommonUtils.isConnectedToInternet(getActivity())) { 

       if(ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
        initializeLocationManager(); 
        requestLocation(); 
       } 
       else { 
        ((HomeActivity) getActivity()).showAlert(getResources().getString(R.string.locationAlert)); 
       } 
      } else { 
       ((HomeActivity) getActivity()).showAlert(getResources().getString(R.string.check_network)); 
      } 
     } 


    } 

    protected synchronized void buildGoogleApiClient() { 
     // Toast.makeText(getActivity(),"buildGoogleApiClient",Toast.LENGTH_SHORT).show(); 
     mGoogleApiClient = new GoogleApiClient.Builder(getActivity()) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .build(); 
    } 

    @Override 
    public void onConnected(Bundle bundle) { 
     // Toast.makeText(getActivity(),"onConnected",Toast.LENGTH_SHORT).show(); 


    } 

    @Override 
    public void onConnectionSuspended(int i) { 
     // Toast.makeText(getActivity(),"onConnectionSuspended",Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 
     // Toast.makeText(getActivity(),"onConnectionFailed",Toast.LENGTH_SHORT).show(); 
    } 


    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mapConnected = false; 
     mGoogleMap = null; 

     View view = getActivity().getCurrentFocus(); 
     if (view != null) { 
      InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
     } 
    } 

    public void setMap() { 

     try {  

        mLatLang = new LatLng(mLastLocation.getLatitude(), mLastLocation.getLongitude()); 
        accessMerchants(); 


        MarkerOptions markerOptions = new MarkerOptions(); 
        markerOptions.position(mLatLang); 
        markerOptions.title(getResources().getString(R.string.position)); 
        markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)); 
        mMarker = mGoogleMap.addMarker(markerOptions); 

        CameraPosition cameraPosition = new CameraPosition.Builder().target(mLatLang).zoom(14).build(); 

        mGoogleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 



        mGoogleMap.setMyLocationEnabled(true); 
        mGoogleMap.getUiSettings().setZoomControlsEnabled(true); 
        mGoogleMap.getUiSettings().setAllGesturesEnabled(true); 


        mLocationManager.removeUpdates(mLocationListeners[0]); 
        mLocationManager.removeUpdates(mLocationListeners[1]); 


     } catch (SecurityException e) { 

     } 
    } 

    private void initializeLocationManager() { 

     if (mLocationManager == null) { 
      mLocationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE); 
     } 

     boolean gps_enabled = false; 
     boolean network_enabled = false; 

     try { 
      gps_enabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); 
     } catch (Exception ex) { 
     } 

     try { 
      network_enabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 
     } catch (Exception ex) { 
     } 

     if (!gps_enabled && !network_enabled) { 
      // notify user 


      ((HomeActivity) getActivity()).showAlert(getResources().getString(R.string.locationAlert)); 
     } 

    } 

    public class LocationListener implements android.location.LocationListener { 

     public LocationListener() { 
     } 

     public LocationListener(String provider) { 
      Log.e(Application.TAG, "LocationListener " + provider); 
      mLastLocation = new Location(provider); 
     } 

     @Override 
     public void onLocationChanged(Location location) { 
      Log.e(Application.TAG, "onLocationChanged: " + location); 

      mLastLocation.set(location); 

      if(mapConnected) 
      setMap(); 

     } 

     @Override 
     public void onProviderDisabled(String provider) { 
      Log.e(Application.TAG, "onProviderDisabled: " + provider); 

     } 
     @Override 
     public void onProviderEnabled(String provider) { 
      Log.e(Application.TAG, "onProviderEnabled: " + provider); 

     } 
     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
      Log.e(Application.TAG, "onStatusChanged: " + provider); 
     } 
    } 

    public void requestLocation() { 

     try { 
      mLocationManager.requestLocationUpdates(
        LocationManager.NETWORK_PROVIDER, 0, 0, 
        mLocationListeners[0]); 
     } catch (java.lang.SecurityException ex) { 
      Log.i(Application.TAG, "fail to request location update, ignore", ex); 
     } catch (IllegalArgumentException ex) { 
      Log.d(Application.TAG, "network provider does not exist, " + ex.getMessage()); 
     } 

     try { 
      mLocationManager.requestLocationUpdates(
        LocationManager.GPS_PROVIDER, 0, 0, 
        mLocationListeners[1]); 
     } catch (java.lang.SecurityException ex) { 
      Log.i(Application.TAG, "fail to request location update, ignore", ex); 
     } catch (IllegalArgumentException ex) { 
      Log.d(Application.TAG, "gps provider does not exist " + ex.getMessage()); 
     } 
    } 
} 

Как я отладки я обнаружил, что я получаю это в onLocationChanged метод, когда метод setMap() называется, до или после того, как будет вызван метод.

Какое это число? Пожалуйста, помогите спасибо ..

ответ

3

Заменить это в коде:

getString(R.string.locationAlert); 

с этим.

getResources().getString(R.string.locationAlert); 

Этого вопрос getString(R.string.locationAlert); этот код возвращает R файл целого назначенного пространства.

+0

проклятье, от одной секунды до поздней: D –

+0

Это было легко. –

+0

, но я так называю это в других фрагментах, там он отлично работает. – Sid

Смежные вопросы