2014-01-15 4 views
-1

Привет в своем приложении Я использую класс модели с методами setter и getter, в одном из моих параметров iam, которые определяют значения ll lng, и я хочу получить эти значения в другой Activity, но она дает нулевые значения:Android java: getter methods дает нулевые значения

Моя модель класса:

public class LatLngModel { 

    double Latitude; 
    double Longitude; 

    public LatLngModel(double latitude, double longtitude) { 
     this.Latitude = latitude; 
     this.Longitude = longtitude; 
    } 

    public double getLatitude() { 
     return Latitude; 
    } 
    public void setLatitude(double latitude) { 
     Latitude = latitude; 
    } 
    public double getLongitude() { 
     return this.Longitude; 
    } 
    public void setLongitude(double longitude) { 
     Longitude = longitude; 
    } 
} 

Я устанавливаю значения, как показано ниже в CLASSA, который проходит фрагментировать

LatLngModel model = new LatLngModel(latitude,longtitude); 
    model.setLatitude(latitude); 
    model.setLongitude(longtitude); 

ниже приводится как РМКО acessi нг методы Садись в ClassB расширяет активность

LatLngModel model = new LatLngModel(latitude,longtitude); 

     System.out.println("getting lat" +(model.getLatitude())) ; 
     System.out.println("getting lat" +(model.getLongitude())) ; 

Но его печатает пустые значения, любая помощь

+0

Может значения передается конструктору LatLngModel равны нулю? –

+3

Проблема должна быть где-то в другом месте, переменная 'double' не может быть« null ». – Christian

+1

Вы должны передать экземпляр 'LatLngModel', который вы создали в' classA'. В 'classB' вы теперь создаете новый экземпляр, который не связан с тем, на котором вы установили эти значения. –

ответ

0

Вы получаете значения с использованием различных объектов

LatLngModel model = new LatLngModel(latitude,longtitude); 
model.setLatitude(latitude); 
model.setLongitude(longtitude); 

Рассмотрим выше как Object A

LatLngModel модели = new LatLngModel (широта, долгота);

Перед acessing, вы должны убедиться, что вы используете один и тот же объект, используя new создаст другой объект

UPDATE

простой, но одноплодной решение

private LatLngModel instance; 

public static LatLngModel GetInstance() 
{ 
if(instance == null) 
    instance = new LatLngModel(); 
return instance; 
} 

Затем вызовите

LatLngModel.getInstance();

, чтобы получить тот же объект из любого класса.

ПРИМЕЧАНИЕ

Dont называть новые для этого класса

+0

Если вы собираетесь предложить синглтон (которого вы не должны), по крайней мере, сделайте это правильно; предпочтительный способ создания синглтона в Java - это использовать 'enum' –

+0

Если вы знаете это, просто скажите ему, как, я не мастер. Вот как я это делаю. Если вы знаете, как лучше я последую за –

+1

@ Арю эй спасибо он работал, и я ищу в Интернете, я вижу, что многие люди используют этот тип синглтона. Большое спасибо. – teekib

0

Вы создаете новую модель в вашем ClassB и поэтому данные исчезли. Вам нужно передать модель, которую вы сделали в classA, в classB, чтобы ее можно было повторно использовать.

0

Вы должны определить свой класс/переменную как статические, прежде чем вы можете ссылаться между любыми двумя различными классами/деятельности.

Попробуйте определить их как статические, и вы должны иметь доступ к ним.

+1

Поощрение использования статических переменных вроде этого никому не помогает. –

+0

Я согласен с Брайаном в «Избегайте статики, если это действительно необходимо», статическое решение будет просто работать в вашем случае, но затем использовать их с умом. Альтернативой может быть сохранение данных в хранилище и доступ к ним путем передачи в качестве параметра между действиями. @BrianRoach дайте мне знать вашу мысль – takrishna

+0

Честно говоря, непонятно, какова фактическая проблема OP. Невозможно, чтобы код, который они отправили, выводил значения «null». –

0
LatLngModel model = new LatLngModel(latitude,longtitude); 

создаст новый объект. Таким образом, значения будут иметь значение null в новом объекте. Pass lat длинный с использованием намерения.

Это не даст ни одного.

Пример:

FirstActivity:

//Send data to second activity 

Intent intent = new Intent(getApplicationContext(), MainTabActivity.class); 
intent.putExtra("lat", model.getLatitude()); 
intent.putExtra("long", model.getLongitude()); 
startActivity(secondActivity); 

SecondActivity:

//Get data from intent 
double latitude; 
double longitude; 
Intent intent = getIntent(); 
latitude = intent.getDoubleExtra("lat",'0.0'); //0.0 is default value 
longitude = intent.getDoubleExtra("long",'0.0'); //0.0 is default value 
+0

Hi..can u кратко ваш ответ с образцом кода..Thankyou – teekib

+0

@teekib Я добавил немного примера. –

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