0
毎回アクティビティが開始されるときに初期化する必要がないように、このアプリケーションで最高レベルのグローバル変数が必要です。私は自分の物理デバイス上で自分のアプリケーションをテストし、nullPointerExceptionを取得します。しかし、エミュレータでの成功! ログ情報:グローバルクラスのApplicationクラスを使用しているときにNullPointerExceptionを取得する
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)
コード:
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();
}
はしかし、最も重要なことは、このアプリケーションは、エミュレーターで正常に実行、です!
は、あなたがこの行にIndexActivityからの38を投稿することはできませんLittleRabitAssistants.java –
でライン83でコードを与えます。 Javaの –
はあなたのマニフェストファイル アンドロイドの次 アプリケーションタグのような??アンドロイドマニフェストファイルでアプリケーションクラスを言及している:名=「yourpackgename.Globalは」 –