1

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

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

查看LocalReminders.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);
    }

}

提醒DAO.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

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

4

9 回答 9

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两次

于 2012-09-26T01:54:00.483 回答
2

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

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

你的remainderID变量应该在左边。你写的方式,id被设置为remindID。

另外,在你的吸气剂中:

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

由于System.out.println是在返回之后,所以你不应该看到输出。Return 将在此处结束函数。

于 2012-09-26T01:55:40.407 回答
1

你有

id = remainderID;

它应该是

 remainderID = id;
于 2012-09-26T01:55:12.140 回答
1

您对提醒 id 的分配是向后的

id = reminderID;

应该读

reminderID = id; 

在你的setReminderID方法

于 2012-09-26T01:55:28.597 回答
1
public void setReminderID(long id) {
    this.reminderID = id;
    System.out.println("Reminder ID Value in Setter: " + reminderID);
}
于 2012-09-26T01:56:40.550 回答
1

尝试使用这个

this.remainderId = id;

代替

remainderId = id;

在您的模型或域中。

于 2016-04-13T19:14:15.530 回答
0

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

于 2012-09-26T01:58:10.870 回答
0

我看到你接受了答案。但是,我想我知道您的 getter-setter 错误的问题。这是关于订单和订单的问题......就像你正在一步一步地给出指示。

让我解释...

第一个,你的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 方法。请记住,这非常重要,因为代码的顺序很重要,并且知道您将值更改指向何处。问题?

于 2017-03-13T10:04:10.870 回答
-2

谢谢你们的帮助。即使我遵循了你们所有的建议,我也无法弄清楚为什么我的 getter 和 setter 不起作用。我猜这与将reminderID 作为构造函数的参数接收的事实有关。无论哪种方式,我通过使用 Android 的 Bundle 并通过它将我的变量从一个活动转移到另一个活动来解决我的问题。

再次感谢您的所有帮助!:)

于 2012-09-27T03:07:39.887 回答