我现在有两个班: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获取的输出:
很明显,在setter和getter方法之间发生了一些事情。在setter方法中,reminderID的值是16,它应该是这样的。但是,getter方法中的值为0。因此,当我在RemindersDAO.java中调用getter方法时,该值仍为0。我在这做错了什么?谢谢你的帮助! :)
答案 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解决了我的问题,并通过它将我的变量从一个活动转移到另一个活动。
再次感谢您的帮助! :)