Android java:getter方法给出null值

时间:2014-01-15 07:11:13

标签: java android getter-setter pojo

嗨,在我的应用程序中,我使用了一个带有setter和getter方法的模型类,在我的一个fragnment iam中设置lat lng值,我想在另一个Activity中获取这些值,但它给出了null值:

我的模特课:

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);

以下是如何使用classB中的get方法扩展Activity

LatLngModel model = new LatLngModel(latitude,longtitude);

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

但它正在打印空值,感谢任何帮助

4 个答案:

答案 0 :(得分:1)

您正在使用不同的对象获取值

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

将上述内容视为Object A

LatLngModel model = new LatLngModel(纬度,经度);

在进行访问之前,您应该确保使用相同的对象,使用new将创建另一个对象

<强>更新

最简单但单身的解决方案

private LatLngModel instance;

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

然后致电

LatLngModel.getInstance();

从任何类中获取相同的对象。

注意

不要为这个班级打电话给新人

答案 1 :(得分:0)

您在classB中创建了一个新模型,因此数据消失了。您需要将您在classA中创建的模型传递给classB,以便重新使用它。

答案 2 :(得分:0)

您必须先将类/变量定义为静态,然后才能在任何两个不同的类/活动之间进行引用。

尝试将它们定义为静态,您必须能够访问它。

答案 3 :(得分:0)

LatLngModel model = new LatLngModel(latitude,longtitude);

将创建一个新对象。因此,新对象中的值将为null。使用意图传递lat长。

这不会给出null。

示例:

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