嗨,在我的应用程序中,我使用了一个带有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())) ;
但它正在打印空值,感谢任何帮助
答案 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