Android - финальное поле int внутри метода onCreate () - PullRequest
6 голосов
/ 28 марта 2011

Можно ли объявить окончательное поле int в классе Service и инициализировать его некоторым целым числом, которое я получаю из запроса к базе данных в методе onCreate ()?

public class MyService extends Service
{
    private int id;

    @Override
    public void onCreate()
    {
        ... calculate id value ...
        id = <id value derived>;
    }
}

Я получил эту ошибку в Eclipse внутри метода onCreate () в строке назначения поля:

"The final field cannot be id cannot be assigned"

и эта ошибка в строке определения класса:

"The blank final field id may not have been inizialized"

Насколько я знаю, это правильный способ определить поле, которое вы хотите инициализировать только один раз. Может кто-нибудь мне помочь? Спасибо

Ответы [ 3 ]

8 голосов
/ 28 марта 2011

Пустая конечная переменная экземпляра должна быть обязательно назначена в конце каждого конструктора класса, в котором он объявлен; в противном случае возникает ошибка времени компиляции.

onCreate () - это определенный метод, вызываемый из ОС, когда создается ваше действие, поэтому он вызывается после конструктора действия. Вы должны назначить свои последние поля перед вызовом onCreate ().

5 голосов
/ 28 марта 2011

Нет, вы не можете инициализировать его в onCreate.Инициализируйте его в объявлении

private final int id = 5;

или в конструкторе класса

public class MyClass extends Activity {
    private final int id;

    public MyClass() {
        id = 10;
    }
}
0 голосов
/ 28 марта 2011

просто определите свой идентификатор на вершине активности, как это: public final static int id = 5. Это должно сделать.

...