2015-05-22 6 views
1

У меня есть класс со статическим полем и статической функцией setter, чтобы установить его значение.Нулевое статическое поле даже после создания экземпляра

class Intermediate{ 
    private static Type myObject=null; 
    public static void setIntermediate(Type ob){ 
    myObject=ob; 
    } 

    public static String getValue(){ 
     if(myObject!=null) 
     return myObject.getValue(); 
     else 
     return ""; // <== always returning this value 

    } 


} 

Intermediate.getValue() вызывается собственным кодом cpp.

В моей основной деятельности я инициируя значение, как

class myActivity extends Activity{ 
    void onCreate(){ 
     Intermediate.setIntermediate(new subType()); 
    }  
} 

Здесь subType является подклассом класса Type.

В родной стороне я звоню getValue() Промежуточного класса и его myObject всегда null;

+0

Либо 'onCreate' не вызывается, либо вы должны установить' myObject' 'volatile'. – OldCurmudgeon

+0

onCreate задает вызов .. Также установлен метод ... Но моя переменная изменчива. –

+0

Будет ли это изменчивым решением этой проблемы? –

ответ

-1

Вы не инициализируете свойство string подтипа в своем коде. Ваш метод OnCreate() делает это:

new subType() 

Так что, когда Intermediate.getValue() называется вас бьют эту линию

return myObject.getValue(); 

Вы можете исправить это, делая это вместо

void onCreate(){ 
    Type t = new subType(); 
    t.setValue("whatever string you want"); 
    Intermediate.setIntermediate(t); 
} 
Смежные вопросы