2016-07-14 3 views
1

Когда пользователь долго нажимает на mapFragment, я хочу отправить данные о клике на другое действие, то есть. Я хочу передать lat, long, city, zip code, country ... to LocationDetailsActivity.Передача данных о местоположении от фрагмента к активности в Android

Я успешно прошел лат и долго, но я застрял со всем остальным. Я новичок как в кодировании, так и в android, поэтому я использую пошаговые примеры, и до сих пор я не мог найти пошаговые примеры для этого.

Код:

if (myLocation != null) { 
     latitude = myLocation.getLatitude(); 
     longitude = myLocation.getLongitude(); 
    } 

    mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { 

     @Override 
     public void onMapLongClick(LatLng arg0) { 

      Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault()); 
      try { 
       List<Address> allAddresses = geocoder.getFromLocation(arg0.latitude, arg0.longitude, 1); 
        if (allAddresses.size() > 0) { 
        Address address = allAddresses.get(0); 
         String addressline = allAddresses.get(0).getAddressLine(0); 
         String city = allAddresses.get(0).getLocality(); 
         String state = allAddresses.get(0).getAdminArea(); 
         String country = allAddresses.get(0).getCountryName(); 
         String postalCode = allAddresses.get(0).getPostalCode(); 
       } 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 


      Intent intent = new Intent(getActivity(), LocationDetailsActivity.class); 
      intent.putExtra("latitude", arg0.latitude); 
      intent.putExtra("longitude", arg0.longitude); 
      intent.putExtra("city",); 
      intent.putExtra("zip",); 
      intent.putExtra("country",); 
      startActivity(intent); 

     } 
    }); 

Любая помощь приветствуется :)

+1

сделать свой город, почтовый индекс переменной глобальной, так что это может быть доступ снаружи –

ответ

2

Попробуйте следующее:

mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { 

     @Override 
     public void onMapLongClick(LatLng arg0) { 

      Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault()); 
      try { 
       List<Address> allAddresses = geocoder.getFromLocation(arg0.latitude, arg0.longitude, 1); 
        if (allAddresses.size() > 0) { 
        Address address = allAddresses.get(0); 

        Intent intent = new Intent(getActivity(), LocationDetailsActivity.class); 
        intent.putExtra("latitude", arg0.latitude); 
        intent.putExtra("longitude", arg0.longitude); 
        intent.putExtra("city", allAddresses.get(0).getLocality()); 
        intent.putExtra("zip", allAddresses.get(0).getPostalCode()); 
        intent.putExtra("state", allAddresses.get(0).getAdminArea()); 
        intent.putExtra("country", allAddresses.get(0).getCountryName()); 
        startActivity(intent); 
       } 

      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
+0

Я получаю эту ошибку: _Variable доступен во внутреннем классе. Нужно быть объявленным окончательным. Я объявил эти переменные окончательными, но затем я получаю эту ошибку. переменный город, возможно, не был инициализирован – Kemo

+0

Я все еще получаю эту ошибку: _Variable «city» доступен во внутреннем классе. Нужно быть объявленным final_ – Kemo

+1

У меня нет ошибок, я буду тестировать это сегодня или завтра, но я считаю, что это он :) Большое спасибо :) – Kemo

2

Вы можете переместить вы startActivity код внутри longClickListener или вы можете определить все переменные глобально, чтобы использовать их вне clickListener

mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { 

@Override 
public void onMapLongClick(LatLng arg0) { 

    Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault()); 
    try { 
     List<Address> allAddresses = geocoder.getFromLocation(arg0.latitude, arg0.longitude, 1); 
      if (allAddresses.size() > 0) { 
      Address address = allAddresses.get(0); 
       String addressline = allAddresses.get(0).getAddressLine(0); 
       String city = allAddresses.get(0).getLocality(); 
       String state = allAddresses.get(0).getAdminArea(); 
       String country = allAddresses.get(0).getCountryName(); 
       String postalCode = allAddresses.get(0).getPostalCode(); 


    Intent intent = new Intent(getActivity(), LocationDetailsActivity.class); 
    intent.putExtra("latitude", arg0.latitude); 
    intent.putExtra("longitude", arg0.longitude); 
    intent.putExtra("city",city); 
    intent.putExtra("zip",postalCode); 
    intent.putExtra("country",country); 
    startActivity(intent); 


     } 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


} 
}); 
+1

Когда я пытаюсь этот код, я получаю «не может разрешить символ» ошибки для Ctiy, PostalCode и страны, и когда я добавить глобальные переменные вне setOnclickListener я получаю «переменный город не был инициализирован». – Kemo

+1

Вы используете опубликованный код внутри области if? – AndroidGenius

2
mMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() { 

    @Override 
    public void onMapLongClick(LatLng arg0) { 

     Geocoder geocoder = new Geocoder(getActivity(), Locale.getDefault()); 
     try { 
      List<Address> allAddresses = geocoder.getFromLocation(arg0.latitude, arg0.longitude, 1); 
       if (allAddresses.size() > 0) { 
       moveToLoginActivity(address,arg0.latitude,arg0.longitude); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 
}); 


function void moveToLoginActivity(Address address, float latitude, float longitude){ 

    Address address = allAddresses.get(0); 
    addressline = allAddresses.get(0).getAddressLine(0); 
    String city = allAddresses.get(0).getLocality(); 
    String = allAddresses.get(0).getAdminArea(); 
    String country = allAddresses.get(0).getCountryName(); 
    String postalCode = allAddresses.get(0).getPostalCode(); 


    Intent intent = new Intent(getActivity(), LocationDetailsActivity.class); 
    intent.putExtra("latitude", latitude); 
    intent.putExtra("longitude", longitude); 
    intent.putExtra("city",city); 
    intent.putExtra("state",state); 
    intent.putExtra("country",country); 
    intent.putExtra("zip",postalCode); 
    startActivity(intent); 
} 
+0

Я получаю эту ошибку: _Variable доступен во внутреннем классе. Необходимо объявить final_, затем объявляю эти переменные окончательными, и я получаю эту ошибку. _Варибежный город, возможно, не был инициализирован – Kemo

+1

Я обновил код, попробуйте сейчас. –

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