价值带回Null

时间:2015-07-06 01:19:43

标签: java android

我有一个社交应用,可以为用户构建汽车列表。每个用户都构建自己的列表。当我点击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;
}


}

4 个答案:

答案 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来实现它的工作。