我有一个社交应用,可以为用户构建汽车列表。每个用户都构建自己的列表。当我点击listview项目以将汽车数据与经销商数据链接时,我在下面的代码中返回一个空值,而实际上我正在尝试带回一个保存在sqlite表中的整数值。我的代码如下。如果需要,我可以添加更多代码。
private Integer d;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_cars);
Car c = new Car();
this.d = c.getD1();
Log.d("Car","Car: " + d); //<---this brings back Null
...
...
}
public class Car implements Serializable {
public static final String TAG = "Car";
private static final long serialVersionUID = -7406082437623008161L;
private long Id;
private String mk;
private String modl;
private Integer d1;
private USER xUser;
public Car() {
this.mk=null;
this.modl=null;
this.d1=null;
}
public Car(String make, String model,Integer d1) {
super();
this.mk = make;
this.modl = model;
this.d1 = d1;
}
public long getId() {
return Id;
}
public void setId(long xId) {
this.Id = xId;
}
public String getMake(){return mk;}
public void setMake(String make) {this.make = mk;}
public String getModel(){return modl;}
public void setModel(String model) {this.model = modl;}
public Integer getD1(){return d1;}
public void setD1(Integer d1) {this.d1 = d1;}
public USER getUser() {
return xUser;
}
public void setUser(USER yUser) {
this.xUser = yUser;
}
}
答案 0 :(得分:0)
当你将d设置为c.getD1()
时,它可能被设置为null,因为c等于new Car()
,因此c中没有任何值被填充。所以为了d不是null你必须调用c.setD1(someValue)
,除非在Car类中d1有一个默认值,但是你提供的代码我肯定不知道,但我猜你没有给它一个默认值,这就是你得到null的原因。
答案 1 :(得分:0)
Integer类型的默认值为null。如果在创建新的Car of Object时不使用setD1等set函数,则值d1将为null。然后在主类中,值d将为是空的。
答案 2 :(得分:0)
为Car做建筑时。您应该为所有值分配默认值,以防止&#34; null&#34;。因为您将新构造集的所有值都指定为null。对于汽车类中的所有值,它将为null。
public Car() {
this.mk="";
this.modl="";
this.d1=0;
}
这是导致null的地方。
Car c = new Car(); - &gt;构造将值赋值为null
this.d = c.getD1(); - &GT;将null赋给 this.d
你应该分配
c.setD1(整数); - &GT;防止null
答案 3 :(得分:0)
没关系。我通过在前一个活动中使用intent.putExtra来实现它的工作。