开发者

Android - Final int field inside onCreate() method

Is is possible to declare an final int field in a Service class and initialize it with some integer I get from a query to database in the onCreate() method?

public class MyService extends Service
{
    private int id;

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

I got this error in Eclipse inside the method onCreate() on the field assignment line:

"The final field cannot be id cannot be assigned"

and this error on the class definition line:

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

As far 开发者_如何学编程as I now, this is the right way to define a field that you want to initialize only once. Can anyone help me? Thanks


A blank final instance variable must be definitely assigned at the end of every constructor of the class in which it is declared; otherwise a compile-time error occurs.

onCreate() is specific method called from the OS when your activity is created so it's called after the constructor of the Activity. You have to assign your final fields before onCreate() is called.


No, you can't initialize it in onCreate. Initialize it on declaration

private final int id = 5;

or in class constructor

public class MyClass extends Activity {
    private final int id;

    public MyClass() {
        id = 10;
    }
}


simply define your id on top of activity like this: public final static int id = 5. That should do.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜