в конструкторе есть значение, но когда я хочу использовать его в другой функции, оно равно нулю (Android) - PullRequest
0 голосов
/ 17 ноября 2011
    double cal;
    double rcarbohydrate;
    double rfat;
    double rprotein;   

 public AdapterDB(double cal, double rcarbohydrate, double rfat, double rprotein, Context ctx)
          {
                this.cal = cal;
                this.rcarbohydrate = rcarbohydrate;
                this.rfat = rfat;
                this.rprotein = rprotein;
                this.context = ctx;
                DBHelper = new DatabaseHelper (context);

                Log.v("", "cal1 " + cal);   
                Log.v("", "cal1 " + rcarbohydrate);
                Log.v("", "cal1 " + rfat);
                Log.v("", "cal" + rprotein);
          }

          public void generateSomething()
          {
                 Log.i("", "cal2 " + cal);   
                 Log.i("", "cal2 " + rcarbohydrate);
                 Log.i("", "cal2 " + rfat);
                 Log.i("", "cal2 " + rprotein);
          }

не может получить значение. Cal1 получить значение, но Cal2 0,0, почему? Любая идея, как я могу решить это? Спасибо. фактически кал = 2500,00 ркарбогидрат = 350,50 рфат = 45,90 рпротеин = 156,90

Ответы [ 3 ]

3 голосов
/ 17 ноября 2011

Вы уверены, что типы данных одинаковы? не могли бы вы попробовать "this.cal" в конструкторе и посмотреть!

1 голос
/ 17 ноября 2011

Вы должны вызывать конструктор в какой-то момент в вашей программе, скажем, класс Test.java как

AdapterDB adapterDB = new AdapterDB(val1, val2, val3, val4, context); 

, что означает, что вы создаете новый объект adapterDB, который содержит некоторые значения.

Теперь вы можете использовать этот объект, вызвав

adapterDB.someFunction();

или передать этот объект другому классу (Activity) в Android либо с помощью intent - intent.putExtra () как Parcelable.объект, но затем вы должны изменить свой класс объекта

и убедиться, что сначала - вы создаете объект, а затем - вы используете его с учетом последовательности выполнения в вашей деятельности (Android)

0 голосов
/ 17 ноября 2011

вы пропустили фундаментальную Мишель - вы «пишете» класс, затем объявляете тип данных этого класса с именем, чтобы использовать его, и вызываете new для того же точного кода, который вы только что написали, но используете имя переменной для обращения к функции.() вызывает код, который вы написали

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...