Getter和Setters不工作?

时间:2012-09-26 01:51:13

标签: java android getter-setter

我现在有两个班:RemindersDAO.java和ViewLocalReminders.java。

我正在尝试访问ViewLocalReminders.java中的变量,我正试图从RemindersDAO.java中调用它。我是通过使用getter / setter方法组合来做到这一点的。但是,由于某种原因,我的变量值在getter方法中始终设置为0。这是代码:

ViewLocalReminders.java

public class ViewLocalReminders extends SherlockListActivity {

private long reminderID;

    public void onCreate(Bundle SavedInstance) {

    reminderID = 16;
    setReminderID(reminderID);      

    }

    public void setReminderID(long id) {
        id = reminderID;
        System.out.println("Reminder ID Value in Setter: " + reminderID);
    }

    public long getReminderID() {
        return reminderID;
        System.out.println("Reminder ID Value in Getter: " + reminderID);
    }

}

RemindersDAO.java

public class RemindersDAO extends SQLiteOpenHelper {

    @SuppressWarnings("deprecation")
    public Cursor getRowByID(Activity activity) {
    String[] from = { _ID, NAME };

    ViewLocalReminders viewLocalReminders = new ViewLocalReminders();
    long reminderID = viewLocalReminders.getReminderID();
    System.out.println("Value of Reminder ID in RemindersDAO: " + reminderID);

    }

}

这是我为所有System.out.printlns获取的输出:

  1. Setter中的提醒ID值:16
  2. Getter中的提醒ID值:0
  3. RemindersDAO中的提醒ID值:0
  4. 很明显,在setter和getter方法之间发生了一些事情。在setter方法中,reminderID的值是16,它应该是这样的。但是,getter方法中的值为0。因此,当我在RemindersDAO.java中调用getter方法时,该值仍为0。我在这做错了什么?谢谢你的帮助! :)

9 个答案:

答案 0 :(得分:7)

这里:

public void setReminderID(long id) {
    id = reminderID;  //<-- wrong, should be the other way around
    System.out.println("Reminder ID Value in Setter: " + reminderID);
}

您应该使用reminderID = id代替

此外:

public void onCreate(Bundle SavedInstance) {

    reminderID = 16;           //one of these two lines..
    setReminderID(reminderID); //..should do it      

}

无需设置reminderId两次

答案 1 :(得分:2)

你的二传手应该是这样的:

 public void setReminderID(long id) {
    reminderID = id;
    System.out.println("Reminder ID Value in Setter: " + reminderID);
}

您的remainderID变量应位于左侧。你写它的方式,id被设置为reminderID。

另外,在你的吸气器中:

public long getReminderID() {
    return reminderID;
    System.out.println("Reminder ID Value in Getter: " + reminderID);
}

由于System.out.println在返回之后,因此您不应该看到输出。返回将在那里结束功能。

答案 2 :(得分:1)

你有

id = remainderID;

应该是

 remainderID = id;

答案 3 :(得分:1)

您的提醒ID是向后分配

id = reminderID;

应该阅读

reminderID = id; 
你在setReminderID方法中

答案 4 :(得分:1)

public void setReminderID(long id) {
    this.reminderID = id;
    System.out.println("Reminder ID Value in Setter: " + reminderID);
}

答案 5 :(得分:1)

尝试使用此

this.remainderId = id;

而不是

remainderId = id;

在您的模型或域中。

答案 6 :(得分:0)

你的setter方法似乎错了。您需要使用IDE的自动生成来创建这些方法。

答案 7 :(得分:0)

我看到你接受了答案。但是,我想我知道你的getter-setter bug的问题。这是关于订单和订单的重要事项......就像你一步一步地给出了指示。

让我解释一下......

第一个,你的setter方法,犯了一个错误。 (见标记注释)

public void setReminderID(long id) {
        id = reminderID; // --> your argument is id. reminderId field value should be changed not the other way around.
        System.out.println("Reminder ID Value in Setter: " + reminderID);
    }

这是正确的二传手。

public void setReminderID(long id) {
    reminderID = id; // --> "id" is your parameter and that's the reminderID's new value.
    System.out.println("Reminder ID Value in Setter: " + reminderID);
}

接下来,关于吸气剂。 getter中存在错误的原因是因为订单错误。 (见标记注释)

public long getReminderID() {
    return reminderID;
    System.out.println("Reminder ID Value in Getter: " + reminderID); // --> putting this line code after "return" results an error and therefore you won't be able to obtain a number or value!
}

这是正确的吸气剂。仔细看看差异。

public long getReminderID() {
    System.out.println("Reminder ID Value in Getter: " + reminderID); // --> Anycode before "return" value will be fine.
    return reminderID; // --> Always put the "return" value at the last line within a getter method.
}

我希望您可以在将来的项目中使用此更正,以防您在编程时需要应用getter-setter方法。请记住,这非常重要,因为代码的排序很重要,并且知道在哪里引导值的变化。有问题吗?

答案 8 :(得分:-2)

感谢你们的帮助。我无法弄清楚为什么我的吸气剂和制定者都没有工作,尽管我跟随了你们所有的人。建议。我猜它与remderID作为构造函数的参数被接受的事实有关。无论哪种方式,我通过使用Android的Bundle解决了我的问题,并通过它将我的变量从一个活动转移到另一个活动。

再次感谢您的帮助! :)