1

現在、RemindersDAO.java と ViewLocalReminders.java の 2 つのクラスがあります。

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);
    }

}

リマインダー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. セッターのリマインダー ID 値: 16
  2. Getter のリマインダー ID 値: 0
  3. RemindersDAO のリマインダー ID 値: 0

明らかに、setter メソッドと getter メソッドの間で何かが起こっています。セッター メソッドでは、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      

}

reminderId2回設定する必要はありません

于 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はreminderIDに設定されていました。

また、ゲッターで:

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

セッターの方法が間違っているようです。これらのメソッドを作成するには、IDEの自動生成を使用する必要があります。

于 2012-09-26T01:58:10.870 に答える
-2

皆さん、ご協力ありがとうございます。皆さんの提案にはすべて従ったにもかかわらず、ゲッターとセッターが機能しない理由を理解できませんでした。私は、reminderID がコンストラクターの引数として取り込まれるという事実と関係があると推測しています。いずれにせよ、私は Android の Bundle を使用し、変数をあるアクティビティから別のアクティビティに転送することで問題を解決しました。

繰り返しますが、すべてのあなたの助けに感謝します! :)

于 2012-09-27T03:07:39.887 に答える