I want global variables that with highest level in this app so that it doesn’t need to be initialize when activity starts every time. I test my application on my physical device, and get nullPointerException. But success in emulator!!
log information:
03-15 15:36:54.851: E/AndroidRuntime(21550):
java.lang.RuntimeException: Unable to start activity ComponentInfo{panda.com.db/panda.com.db.IndexActivity}: java.lang.NullPointerException
03-15 15:36:54.851: E/AndroidRuntime(21550):
at panda.com.db.LittleRabitAssistants.<init>(LittleRabitAssistants.java:83)
03-15 15:36:54.851: E/AndroidRuntime(21550):
at panda.com.db.Global.Init(Global.java:23)
03-15 15:36:54.851: E/AndroidRuntime(21550):
at panda.com.db.IndexActivity.onCreate(IndexActivity.java:38)
Code of global class:
public class Global extends Application{
private static LittleRabitAssistants assistants;
..
..
public void Init(){
this.assistantsDB = new DBAdapter(this,null,null);
this.assistants = new LittleRabitAssistants(this);
this.initLocaleFromDB();
}
}
public LittleRabitAssistants(Global globalVariable){
this.globalVariable=globalVariable;
..
if(globalVariable.getLocaleLanguage().equals("zh-CN")){
..
}else{
..
}
}
public class IndexActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
//get global application
Global globalApplication = (Global)this.getApplication();
//initialize the Assistants
globalApplication.Init();
pa = globalApplication.getAsisstents();
}
However, the most important thing is, this application run successfully in emulator!!!
I think you have called the init() method before calling on the super.onCreate()…